1

iphone または ipad デバイスでのライブ ストリームに使用するために、red5 サーバーからの rtmp ストリームをトランスコードしています。組み込みのセグメンターを使用して git リポジトリから最新の 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 コマンドを簡単に実行できます。

4

1 に答える 1

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 を追加しました。

于 2013-02-01T03:48:49.873 に答える