实时流式传输RTMP到HTML5

时间:2015-08-11 08:59:25

标签: html5 ffmpeg streaming video-streaming rtmp

我有来自RTMP的{​​{1}}直播,我需要在带有Unreal Media Server标记的HTML5页面上显示。到目前为止,我正在考虑使用ffmpeg库使用H.264编解码器对流进行转码并将其输出到.mp4文件,然后通过http协议访问它,如下所示:<video>但是,我不确定这是否会从头开始播放整个输出文件或直播。我当前用于转码流的ffmpeg命令是:

http://ip_addr/output_from_ffmpeg.mp4

有人能指出我正确的方向吗?我还在文档中读到ffserver能够实现这一点但是Windows构建不可用。

3 个答案:

答案 0 :(得分:3)

您无法使用mp4格式直播,也无法仅使用HTML5代码直播。您的命令将流记录在静态mp4文件中,以通过HTTP渐进式下载提供服务。

RTMP需要Flash播放器。替代方案包括HLS和支持桌面(例如Clappr,JWPlayer,Flowplayer)的Flash回退或支持它的浏览器上的媒体源扩展(MSE)的DASH的网络播放器。

答案 1 :(得分:1)

我最终使用VLC Player(使用FFmpeg)使用H.264编解码器对RTMP流进行转码,并以.ogg格式显示,并内置了VLC的http服务器。此外,我为基于Apple的设备启动了HLS流式传输的另一个VLC实例。以下分别是H.264HLS的两个命令(注意:我在Windows上执行此操作,并使用wamp进行HLS流,因为在这种情况下VLC不提供传输方式) :

vlc.exe -I dummy rtmp://_ip_addr_of_the_rtmp_stream :network-caching=0 :sout=#transcode{vcodec=theo,vb=512,scale=1,acodec=none}:http{mux=ogg,dst=:8181/stream.ogg} :no-sout-rtp-sap :no-sout-standard-sap :sout-keep

vlc.exe -I dummy rtmp://_ip_addr_of_the_rtmp_stream :network-caching=0 :sout="#transcode{vcodec=h264,vb=500, venc=x264{aud,profile=baseline,level=30,keyint=30,ref=1}, aenc=none} :std{access=livehttp{seglen=10,delsegs=true,numsegs=5, index=C:\wamp\www\stream.m3u8, index-url=http://_ip_addr_of_your_web_server/stream-########.ts}, mux=ts{use-key-frames}, dst=C:\wamp\www\stream-########.ts}"

然后在html页面中简单地说:

<video width="320" height="240" controls autoplay>
  <source src="http://_ip_addr_of_your_web_server/stream.m3u8" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'/>
  <source src="http://_ip_addr_of_your_web_server:8181/stream.ogg" type="video/ogg">
  Your browser does not support the video tag.
</video>

进一步阅读:

https://wiki.videolan.org/Documentation:Streaming_HowTo/Streaming_for_the_iPhone/

答案 2 :(得分:1)

虚幻媒体服务器v12(2016年9月15日发布)完全支持您的需求。 您不需要对任何内容进行转码。通过RTMP播放的同一广播现在可以在HTML5视频标签中播放。