ffmpegで断片化されたmp4を出力する方法は?



How Output Fragmented Mp4 With Ffmpeg



解決:

これでうまくいくはずです:

ffmpeg -re -i infile.ext -g 52  -c:a aac -b:a 64k -c:v libx264 -b:v 448k  -f mp4 -movflags frag_keyframe + empty_moov  output.mp4
  • frag_keyframeにより、出力が断片化されます。
  • empty_moovを使用すると、出力が100%断片化されます。これがないと、最初のフラグメントは短編映画として多重化されます(moov)に続いて、残りのメディアが断片化され、
  • -reはライブストリーミング(入力メディアフレームレートを使用)の場合に役立ちます。ファイルを作成する場合は使用しないでください。
  • -g 52は、(少なくとも)52番目のフレームごとにキーフレームになるように強制します

正常なキーフレーム間隔を計算するには、ストリーミングサーバーのドキュメントにあるフラグメントサイズに関する段落を参照してください。 -H.264の無料の代替手段であるWebMの使用を検討することもできます(一部のプラットフォームでは、断片化されたmp4よりもサポートが優れています)。



重要な注意点: FFMpegのマルチプレクサは 間隔 両者にtkhdとトラックごとにmdhdアトムを0xffffffffに設定します。これにより、一部のプレーヤーで問題が発生します(たとえば、Quicktimeはそのようなファイルを再生しません)。ツールを見つけて、ゼロ(0x00000000)に変更する必要があります。


更新:断片化されたMP4をISMV(スムーズストリーミング)ファイルと見なします。 2012年1月27日以降の新しいバージョンFFMPEG0.10は、この形式に多重化できます。



$ ffmpeg -h muxer = ismv ismv muxer AVOptions:-movflags E .... MOV muxer flags rtphint E .... RTPヒントトラックを追加empty_moovE ....最初のmoovアトムを空にします(QuickTimeではサポートされていません)frag_keyframe E ....ビデオキーフレームのフラグメントseparate_moofE ....トラックごとに個別のmoof / mdatアトムを書き込むfrag_customE ....発信者リクエストのフラグメントをフラッシュするismlE ....ライブのスムーズなストリーミングフィードを作成する(プッシュ用)公開ポイントへ)-moov_size E ....最初に配置できる最大のmoovサイズ-rtpflagsE .... RTPマルチプレクサフラグlatmE .... MPEG4-GENERICの代わりにMP4A-LATMパケット化を使用するAAC rfc2190 E .... H.263 skip_rtcp E ....には、RFC4629の代わりにRFC2190パケット化を使用します。RTCP送信者レポートを送信しないでください-skip_iodsE .... iodsアトムの書き込みをスキップします。 -iods_audio_profile E .... iodsオーディオプロファイルアトム。 -iods_video_profile E .... iodsビデオプロファイルアトム。 -frag_duration E ....最大フラグメント期間-min_frag_durationE ....最小フラグメント期間-frag_sizeE ....最大フラグメントサイズ-ism_lookaheadE .... ISMファイルの先読みエントリの数 

ffmpeg -h(manページではありません)には次のものがあります。

mp4マルチプレクサAVOptions:-movflags E .... MOVマルチプレクサフラグrtphintE .... RTPヒントトラックを追加-moov_sizeE ....最初に配置できるように最大moovサイズ-frag_sizeE .... maximumフラグメントサイズ-frag_durationE ....最大フラグメント期間-rtpflagsE .... RTPマルチプレクサフラグlatmE .... AACにはMPEG4-GENERICの代わりにMP4A-LATMパケット化を使用します-skip_iodsE .... iodsの書き込みをスキップします原子。 -iods_audio_profile E .... iodsオーディオプロファイルアトム。 -iods_video_profile E .... iodsビデオプロファイルアトム。

断片化されたmp4を見た場合、それを特定する方法はわかりませんが、ffmpegにはいくつかの(十分に文書化されていない)サポートがあるようです。