尝试使用FFMPEG对XDCAM HD422 MXF进行编码 但无法知道编码器/格式/多路复用器的具体设置 有人可以给我看样品代码或给出一些建议吗?
答案 0 :(得分:2)
如果您不确切知道如何设置某个容器和/或编解码器,请始终使用avformat_alloc_output_context2()
从文件扩展名中猜出您的格式(" mxf" in这种情况),所以你得到一个起点!
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
FFprobe告诉我视频编解码器与" mxf"的默认值相同。 ( AV_CODEC_ID_MPEG2VIDEO ),但音频编解码器 AV_CODEC_ID_PCM_S24LE 。
那么,现在该怎么办?只需更改audio_codec:
m_formatContext->oformat->audio_codec = AV_CODEC_ID_PCM_S24LE;
就绪!您拥有相机的相同格式和编解码器!继续创建音频/视频流,打开编解码器等等......