当前位置: 首页 > 知识库问答 >
问题:

当用libx264压缩一组图像时,为什么帧率会影响最终输出大小?

洪胤
2023-03-14
ffmpeg -r 30 -pattern_type glob -i "*.jpg" -vcodec libx264 -crf 30 -pix_fmt yuv420p output.mp4
[libx264 @ 0x7f9b26001c00] frame I:1     Avg QP:30.67  size: 44649
[libx264 @ 0x7f9b26001c00] frame P:15    Avg QP:31.19  size:  5471
[libx264 @ 0x7f9b26001c00] frame B:44    Avg QP:31.45  size:   767
[libx264 @ 0x7fcd32842200] frame I:1     Avg QP:21.29  size: 90138
[libx264 @ 0x7fcd32842200] frame P:15    Avg QP:22.48  size: 33686
[libx264 @ 0x7fcd32842200] frame B:44    Avg QP:26.29  size:  6674

因此,I/P/B计数是相同的,但对于2 FPS文件,QP要低得多。为了抵消,我尝试为2 FPS文件增加-crf,以获得大约相同的目标大小,但这只是给了我一个非常模糊的视频(不得不去crf=40)。我试着和-minrate,-maxrate,-bt捣乱,都没用。我猜有一些x264编解码器设置是帧率相关的,但我不知道是哪一个(据我所知,恒定比特率受帧率影响,但CRF不应该,但可能我误解了。

共有1个答案

卜凯旋
2023-03-14

CRF模式的目标是在其编码输出中获得并保持一定的质量水平。如果同一组帧以25 fps的速度显示,那么每个帧的持续时间为40毫秒,观众将无法完全理解瞬态特征。像x264/x265这样的编码器将更积极地优化这些帧。如果以2个fps的速度显示,每个帧可以看到半秒钟,所以在保持感知质量上没有太多的余地。

对于x264,这是实现该逻辑的提交消息。

MB-tree和qcomp复杂度估计现在在计算中考虑帧的持续时间。这对于视觉优化非常重要,因为持续时间更长的帧在质量方面更重要。提高VFR感知PSNR多达1-2dB在极端测试情况下,约0.5 dB在更普通的VFR剪辑(例如deddued动画插曲)。

 类似资料:
  • 所以,我正在使用这段代码压缩我的*MP4文件。我需要获得更低的质量和更低的比特率: 问题是:ffmpeg压缩后,最后一帧镜头被丢弃。屏幕截图在这里:screenshot_ffmpeg_drop帧

  • 我有一个占用内存的java服务器任务。首先,我怀疑它是否超过了MinHeapFreeRatio,但这只是猜测。更有趣的是,GC将成熟代减少到大约2%,但从未减少为堆分配的内存。

  • 我一直在计算图像的未压缩和压缩文件大小。这对我来说总是导致压缩图像比我预期的未压缩图像小。如果图像包含大量不同的颜色,则存储调色板会占用大量空间,还需要更多位来存储每个代码。然而,我的问题是,压缩方法是否可能导致比未压缩的RGB图像更大的文件。对于这种压缩方法仍然有用的、总共包含k种不同颜色的最小正方形RGB图像,其大小(像素)是多少?因此,我们想要找到,对于给定的k值,找到最小整数n,对于该整数

  • ImageMagick,GraphicsMagick,OpenJPEG都显示了相同的结果(我假设是因为使用了Jasper对JPEG-2000进行编码),并且都缺少编码选项。使用Kakadu或联机/基本转换器也没有帮助。在目前的现状下,像imagemin这样的工具加上插件,可以在输出上提供比JPEG-2000高得多的质量,当对Web进行最大程度的压缩时。所以JPEG-2000对于Safari来说是很

  • 请考虑以下情况: 这将无法编译,并出现关于< code>A::A的不明确重载的错误。两个候选人都被认为是可行的,因为要求很简单: 其次,为了使 成为一个可行的函数,每个参数都应该存在一个隐式转换序列 (13.3.3.1),该序列将该参数转换为 的相应参数。 虽然有一个从<code>double</code>到<code>int</code>的隐式转换序列,但<code>A(int)</code>重