我有一个来自Unreal Media Server的RTMP live流,我需要在带有<video>标记的HTML5页面上显示它。到目前为止,我正在考虑使用FFMPEG库对H.264编解码器的码流进行转码,并将其输出到.mp4文件,然后通过如下的http://ip_addr/output_from_ffmpeg.mp4协议访问它: http,然而,我不确定这是否会从头开始播放整个输出文件或将其实时流式传输。我当前用于转码流的ffmpeg命令是:
ffmpeg -i rtmp://IP_addr_of_rtmp_stream:5119/live/Roulette -c:v libx264 -maxrate 1000k -bufsize 2000k -g 50 output.mp4有谁能给我指个方向吗?我也在文档中读到ffserver能够实现这一点,但windows build不能用于它。
发布于 2015-08-12 01:12:47
我最终使用了VLC Player (它使用FFmpeg),用H.264编解码器对RTMP流进行转码,并用VLC的内置http服务器以.ogg格式显示它。此外,我还为基于苹果的设备启动了另一个用于HLS流媒体的VLC实例。下面是分别用于H.264和HLS的两个命令(注意:我在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/
发布于 2015-08-11 21:22:43
您不能使用mp4格式直播,也不能仅使用HTML5标签直播。您的命令将流记录在一个静态mp4文件中,该文件将通过HTTP渐进式下载提供。
RTMP需要一个Flash播放器。替代方案包括HLS和支持桌面闪存回退的web播放器(例如,Clappr、JWPlayer、Flowplayer)或DASH。
发布于 2016-09-29 00:58:03
虚幻媒体服务器v12 (2016年9月15日发布)完全支持您的需求。你不需要转码任何东西。通过RTMP播放的相同广播,现在可以在HTML5视频标签中播放。
https://stackoverflow.com/questions/31937420
复制相似问题