3

セグメント化されたHLS出力を取得するために画像をループしようとしています。

ffmpeg -loop 1 -i image.png -vcodec libx264 -acodec aac -map 0 -f segment -segment_time 5 -segment_list /seg.m3u8  /200_%06d.ts

  Metadata:
    encoder         : Lavf54.26.101
    Stream #0:0: Video: h264, yuv444p, 1344x840, q=-1--1, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (png -> libx264)
Press [q] to stop, [?] for help
Failed to open bitstream filter h264_mp4toannexb for stream 0 with codec libx264: Invalid argument
[mpegts @ 0x7fe91a615600] H.264 bitstream malformed, no startcode found, use the h264_mp4toannexb bitstream filter (-bsf h264_mp4toannexb)
av_interleaved_write_frame(): Invalid argument

フィルタを追加しても効果がないようです。

4

1 に答える 1

7

エラーメッセージに示されているように(実際には説明されていませんが)、h.264ビデオデータをMPEG2トランスポートストリームに変換する際に問題が発生します。デフォルトのh.264コンテナ(MPEG4)では、長さのプレフィックスが付けられますが、MPEG2トランスポートストリームでは、開始コードが使用されます。マッピングは、h.264仕様のAnnex、前述のAnnex 2で説明されています。ドキュメント:http ://git.videolan.org/?p = ffmpeg.git; a = blob; f = doc / bitstream_filters.texi

-vbsf h264_mp4toannexbしたがって、MPEG2 TSを適切に作成するには、コマンドラインに追加する必要があります。また、次の引数も追加する必要がある場合があり-flags -global_headerます。これは、コーデックパラメータの一部が帯域内(トランスポートストリーム内)に含まれていることを確認するためです。

于 2012-09-20T20:37:28.990 に答える