AVC是高级视频编码的简称(Advanced Video Coding),也被叫做H264。代表产品有x264库。AVC有四种配置(profile)。分别是:Baseline、Extended、Main、High。XAVC符合H.264 Level 5.2标准。
官网ffmpeg.exe执行如下命令可以生成AVC的mxf文件,本人自编译64位ffmepg(带x264,x265)也可以生成mxf文件。命令如下:
ffmpeg -i prores.mov -pix_fmt yuv422p10le -r 50 -c:v libx264 -b:v 500M -level 5.2 -x264opts colorprim=bt2020 -x264opts transfer=bt2020 -x264opts colormatrix=bt2020 -x264opts avcintra-flavor=sony -c:a pcm_s24le out500.mxf
若源文件不是mov,本人试的mp4文件,提示无法写文件头
本人自编译32位ffmepg(带x264)提示video encoding失败
代码实现几个关键地方:
avcodec_context->codec_id = bH265 ? AV_CODEC_ID_HEVC : AV_CODEC_ID_H264;
avcodec_context->pix_fmt = b10bit? AV_PIX_FMT_YUV422P10LE : AV_PIX_FMT_YUV420P;
// 设置帧率50fps
avcodec_context->time_base.num = 1;
avcodec_context->time_base.den = fps;
avcodec_context->bit_rate = 200000000; //平均码率200M/b
av_dict_set(¶m, "preset", "ultrafast", 0);
av_video_stream->time_base = avcodec_context->time_base;
int flush_encoder(){//编码器中剩余的frame还需继续编码成packet
while (true)
{
ret = avcodec_send_frame(avcodec_context, NULL);
ret = avcodec_receive_packet(avcodec_context, av_packet);
。。。
}