我正在从red5服务器转码rtmp流,以便在iphone或ipad设备上直播。我使用内置的分段器从git repo构建最新的ffmpeg版本,使用以下内容创建.ts文件和m3u8播放列表文件:
ffmpeg -probesize 50k -i "rtmp://localhost/oflaDemo/red5StreamDemo live=1" \
-c:v libx264 -b:v 128k -vpre ipod320 -flags -global_header -map 0 \
-f segment -segment_time 3 -segment_list foo.m3u8 -segment_list_flags +live \
-segment_list_type m3u8 -segment_list_size 5 -segment_format mpegts foo%d.ts
这样可以正常工作,但即使设置为3(-segment_time 3),我也无法将段大小小于约12秒。它似乎是由libx264 vcodec引起的。 我错过了任何旗帜吗?
顺便说一下,你可以通过启动red5 SimpleBroadcaster示例来简单地运行上面的ffmpeg命令。
答案 0 :(得分:2)
我怀疑这是因为GOP的大小。分段器需要I帧边界才能创建段。
ffmpeg -probesize 50k -i "rtmp://localhost/oflaDemo/red5StreamDemo live=1" \
-c:v libx264 -b:v 128k -g 90 -vpre ipod320 -flags -global_header -map 0 \
-f segment -segment_time 3 -segment_list foo.m3u8 -segment_list_flags +live \
-segment_list_type m3u8 -segment_list_size 5 -segment_format mpegts foo%d.ts
添加-g 90.可以提供帮助。