ffmpeg h264 视频编码 模糊问题、MP4播放速度快问题

本文使用 ffmpeg(4.0版本)的dll、lib、include进行视频编码。相关基本知识可参考以下博客:

https://blog.csdn.net/cfqcfqcfqcfqcfq/article/details/68496213

  1. 编码生成的视频模糊、清晰度特别差。
原因是:未对编码器的上下文信息的码率进行显示设置,或设置的过低,(默认的值太小不满足)
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没有这个问题,如果使用最新的版本是存在这个问题的。该问题的解决是参考以下链接解决的:

http://blog.sina.com.cn/s/blog_56ab14d50102wyur.html

猜你喜欢

转载自blog.csdn.net/wangyjfrecky/article/details/80269534