如何使用FFMPEG将RTMP转换为mp4?

时间:2014-05-05 06:33:04

标签: ffmpeg http-live-streaming live-streaming wowza

我想询问有关实时流媒体,我有wowza服务器并在网络客户端使用rtmp协议,问题是如何兼容所有设备,如桌面和移动,我使用ffmpeg,但如何将rtmp更改为mp4飞? ffmpeg中的什么类型命令?我想使用协议http而不是rtmp或rtsp,谢谢。

此致 潘集

1 个答案:

答案 0 :(得分:5)

如果您想要实时http流(HLS),那么您应该在cupertinostreamingpacketizer列表中使用wowza的<LiveStreamPacketizers>,并在http://your-server:1935/live/yourstream/playlist.m3u8指向非rtmp客户端。不需要ffmpeg。通常,默认情况下会在wowza上启用HLS打包器,因此只需尝试在支持html5 + h264的浏览器中访问该URL。请记住,您的编码软件必须编码为h264,而不是v6编解码器。

您的HLS流将在rtmp流后约30秒 - 1分钟。如果您希望流在设备之间同步,请考虑使用HDS(sanjosestreamingpacketizer)而不是rtmp,并将支持HDS的Flash播放器指向http://your-server:1935/live/yourstream/manifest.f4m

如果您想将实时流录制为mp4以供日后播放,您可以使用wowza的内置录制API - 请参阅http://www.wowza.com/forums/content.php?123#userinterface

或者,您可以使用rtmpdump(通常在大多数unix系统上作为包提供)来获取rtmp流,然后在ffmpeg转换后进行转换:

rtmpdump -q --rtmp "rtmp://your-server:1935/live/" --playpath yourstream -o yourstream.flv --live
ffmpeg -i yourstream.flv -vcodec copy -acodec copy yourstream.mp4 </dev/null
ffmpeg -i yourstream.mp4 -vframes 1 yourstream.jpg </dev/null

第一个ffmpeg命令转换为mp4,第二个帧抓取第一帧并保存为.jpg,以便您可以将其用作海报框架。