【问题标题】:Settings required to set to emulate the FFMPEG '-sameq' flag when using libavcodec使用 libavcodec 时模拟 FFMPEG '-sameq' 标志所需的设置
【发布时间】:2011-09-06 23:07:53
【问题描述】:

目前正在尝试使用 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 中需要哪些额外设置来提高输出质量?

【问题讨论】:

    标签: ffmpeg encode libavcodec


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-12-08
      • 1970-01-01
      • 2012-01-26
      • 2012-03-31
      • 2017-05-26
      • 2020-08-13
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      相关资源
      最近更新 更多