本文使用 ffmpeg(4.0版本)的dll、lib、include进行视频编码。相关基本知识可参考以下博客:
https://blog.csdn.net/cfqcfqcfqcfqcfq/article/details/68496213
- 编码生成的视频模糊、清晰度特别差。
AVCodecContext* pCodecCtx;//编码器上下文信息
如果待编码的图像大小是1920*1080时,码率设置为4000000;
pCodecCtx->bit_rate = 4000000;
码率和质量成正比,但是文件体积也和码率成正比。这是要牢记的,但是码率超过一定数值,对画面的质量没有多大影响。
2. 生成的MP4格式视频播放时,速度特别快,码率很大
生成avi格式视频没有问题,但是生成mp4格式的视频就播放速率特别快,原因是:
//写文件头
avformat_write_header(pFormatCtx,NULL);
在生成avi时,执行该句后,pFormatCtx中的time_base是之前设置的{1,25};
但是在生成MP4时,执行该句后,pFormatCtx的time_base被改变了,成为{1,12800};
因此,在生成MP4格式视频时,需要把写文件头的语句写成以下形式:
//写文件头
AVDictionary *opt = 0;
av_dict_set_int(&opt, "video_track_timescale", 25, 0);
avformat_write_header(pFormatCtx,&opt);
以前旧版本的ffmpeg没有这个问题,如果使用最新的版本是存在这个问题的。该问题的解决是参考以下链接解决的: