XDCAM HD422 MXF を FFMPEG でエンコードしようとしていますが、encoder/format/mux の特定の設定がわかりません。サンプル コードを見せたり、アドバイスをくれたりできますか?
1 に答える
コンテナやコーデックの設定方法が正確にわからない場合avformat_alloc_output_context2()
は、ファイル拡張子 (この場合は「mxf」) から形式を推測するために常に を使用してください。これにより、開始点が得られます。
AVFormatContext * formatContext( 0 );
avformat_alloc_output_context2( &formatContext, 0, 0, "anything.mxf" );
これを行うformatContext
と、デフォルトのコーデックがすでに設定されているので、次のものを使用します。
m_formatContext->oformat->video_codec
m_formatContext->oformat->audio_codec
「mxf」の場合、デフォルトのオーディオ/ビデオ コーデックAV_CODEC_ID_MPEG2VIDEOおよびAV_CODEC_ID_PCM_S16LE
ただし、この場合、デフォルトのセットアップでは十分ではありません。特定のカメラ モデルがあります。したがって、いくつかのサンプルビデオを使用して、正確なフォーマット/コーデックを確認できますffprobe some_sample.mxf
ここでサンプルを見つけました: http://www.hamburgpromedia.com/Testfiles/MXF_MPEG_Testfiles.php
- XDCAM_HD422_720p50.mf
- XDcam_HD4221080i50.mf
FFprobe は、ビデオ コーデックが "mxf" ( AV_CODEC_ID_MPEG2VIDEO ) のデフォルトと同じであると教えてくれますが、オーディオ コーデックはAV_CODEC_ID_PCM_S24LEです。
それで、今何をすべきですか?audio_codec を変更するだけです。
m_formatContext->oformat->audio_codec = AV_CODEC_ID_PCM_S24LE;
準備!カメラのフォーマットとコーデックは同じです。続けて、オーディオ/ビデオストリームを作成し、コーデックを開くなど...