其他分享
首页 > 其他分享> > ffmpeg编码:xavc 42210bit+mxf

ffmpeg编码:xavc 42210bit+mxf

作者:互联网

       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(&param, "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);

。。。

}

标签:xavc,avcodec,42210bit,base,context,time,mxf,x264opts
来源: https://blog.csdn.net/wangbuji/article/details/122513771