目前正在尝试使用 libavcodec 将 MP4(MPEG4 和 H264)和 MPG (MPEG2) 视频文件转码为 .MP4、.MPG 和 .AVI 文件。以前使用 FFMpeg.exe 并使用“-sameq”标志完成此操作,以保留与输入文件相同/相似的质量输出文件。
现在使用 av_open_input_file、av_read_frame 和 avcodec_decode_video2 打开、读取和解码输入文件,然后分配一个 AVCodecContext 并使用 avcodec_encode_video 对数据进行编码。但是输出文件的视频质量很差。
这些是我正在使用的 AVCodecContext 设置?:-
codecContextOutput->width = SAME AS INPUT FILE;
codecContextOutput->height = SAME AS INPUT FILE;
codecContextOutput->pix_fmt = SAME AS INPUT FILE;
/* frames per second */
AVRational ar;
ar.num = 1;
ar.den = 25;
codecContextOutput->time_base = ar;
codecContextOutput->gop_size = 10; /* emit one intra frame every ten frames */
codecContextOutput->max_b_frames=1;
codecContextOutput->bit_rate = 480000;
有人知道模拟“-sameq”设置所需的额外设置或 AVCodecContext 中需要哪些额外设置来提高输出质量?