尝试使用 FFMPEG 对 XDCAM HD422 MXF 进行编码但不知道编码器/格式/复用器的具体设置任何人都可以向我展示示例代码或为此提供一些建议吗?
问问题
3715 次
1 回答
2
当您不确切知道如何设置某些容器和/或编解码器时,请始终使用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
但是,在这种情况下,默认设置是不够的。您有特定的相机型号。因此,通过一些示例视频,您可以使用检查 EXACT 格式/编解码器ffprobe some_sample.mxf
我在这里找到了这些样本:http ://www.hamburgpromedia.com/Testfiles/MXF_MPEG_Testfiles.php
- XDCAM_HD422_720p50.mxf
- XDcam_HD4221080i50.mxf
FFprobe 告诉我视频编解码器与“mxf”(AV_CODEC_ID_MPEG2VIDEO)的默认编解码器相同,但音频编解码器是AV_CODEC_ID_PCM_S24LE。
那么,现在该怎么办?只需更改 audio_codec:
m_formatContext->oformat->audio_codec = AV_CODEC_ID_PCM_S24LE;
准备好!您拥有与相机相同的格式和编解码器!继续创建音频/视频流,打开解码器等...
于 2013-10-09T05:38:19.760 回答