模拟FFMPEG'-sameq';使用libavcodec时的标志

模拟FFMPEG'-sameq';使用libavcodec时的标志,ffmpeg,encode,libavcodec,Ffmpeg,Encode,Libavcodec,目前正在尝试使用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对数据进行编码。但是,输出文件

目前正在尝试使用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对数据进行编码。但是,输出文件的视频质量非常差

以下是我正在使用的AvcodeContext设置:-

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”设置所需的其他设置,或者AVCodeContext中需要哪些其他设置来提高输出质量?

在进一步测试和使用Libavformat库中的一些不同调用之后,我发现,只要我将输出上下文的比特率设置为与输入上下文相同,就可以保持相同的质量。
当从高带宽格式(如MPEG2)转换到H264流时,这并不方便,因为输出带宽可能比需要的要大得多,但这是一种解决方案,这样我就不会丢失转换文件的质量。

在进一步测试和使用Libavformat库中的一些不同调用之后,我发现,只要我将输出上下文的比特率设置为与输入上下文相同,就可以保持相同的质量。 当从高带宽格式(如MPEG2)转换到H264流时,这并不方便,因为输出带宽可能比需要的带宽大得多,但这是一种解决方案,因此不会丢失转换文件的质量