Fai*_*sal 44 video compression ffmpeg video-conversion x264
该FFmpeg的维基说,最好的压缩率是预先设定的“veryslow”。
但是当我用我的视频尝试它时,预设veryfast在我的情况下提供了最好的压缩。
以下是我的样本的输出:
ultrafastffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset ultrafast -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-ultrafast.mp4"
frame= 2822
fps= 65
q=-1.0
Lsize=
239118kB
time=00:01:34.18
bitrate=20797.6kbits/s
speed=2.16x
Run Code Online (Sandbox Code Playgroud)
superfastffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset superfast -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-superfast.mp4"
frame= 2822
fps= 63
q=-1.0
Lsize= 150252kB
time=00:01:34.18
bitrate=13068.3kbits/s
speed=2.09x
Run Code Online (Sandbox Code Playgroud)
veryfastffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset veryfast -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-veryfast.mp4"
frame= 2822
fps= 62
q=-1.0
Lsize=
115997kB
time=00:01:34.18
bitrate=10089.0kbits/s
speed=2.08x
Run Code Online (Sandbox Code Playgroud)
fastffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset fast -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-fast.mp4"
frame= 2822
fps= 52
q=-1.0
Lsize=
133773kB
time=00:01:34.18
bitrate=11635.1kbits/s
speed=1.72x
Run Code Online (Sandbox Code Playgroud)
mediumffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset medium -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-medium.mp4"
frame= 2822
fps= 43
q=-1.0
Lsize=
124154kB
time=00:01:34.18
bitrate=10798.4kbits/s
speed=1.42x
Run Code Online (Sandbox Code Playgroud)
slowffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset slow -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-slow.mp4"
frame= 2822
fps= 27
q=-1.0
Lsize= 125262kB
time=00:01:34.18
bitrate=10894.8kbits/s
speed=0.886x
Run Code Online (Sandbox Code Playgroud)
slowerffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset slower -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-slower.mp4"
frame= 2822
fps= 14
q=-1.0
Lsize= 125061kB
time=00:01:34.18
bitrate=10877.3kbits/s
speed=0.465x
Run Code Online (Sandbox Code Playgroud)
veryslowffmpeg -y -threads 1 -i "D:\Video\PresentTest\Safari_Dolby_Digital_Plus.m2ts.mp4" -c:v libx264 -preset veryslow -c:a aac -max_muxing_queue_size 1024 "D:\Video\PresentTest\Safari_Dolby_Digital_Plus-veryslow.mp4"
frame= 2822
fps=6.6
q=-1.0
Lsize= 118149kB
time=00:01:34.18
bitrate=10276.2kbits/s
speed=0.221x
Run Code Online (Sandbox Code Playgroud)
veryfast与其他预设相比,为什么预设生成的压缩文件最多?
视频丢失与预设有关veryfast吗?
Pet*_*des 89
有损压缩是比特率(文件大小)和质量之间的权衡,而不仅仅是获取最小的文件。 如果这就是您想要的,请使用-preset veryslow -crf 51(并可选择缩小到 256x144)来获得一个非常小的文件,该文件主要是没有细节的模糊斑点。
编码是 CPU 时间与质量与比特率的 3 向权衡,与无损压缩非常不同,例如zip文件大小是您衡量“最佳”压缩的方式,并且是您在 2 向权衡中权衡时间的权衡。1 或 3 路,如果压缩和解压速度是独立的...
-preset veryslow为您提供 x264 可以提供的最佳权衡2,通过花费更多的 CPU 时间来寻找表示每个位更多细节的方法。(即每个失真率的最佳权衡)。
这主要与速率控制正交,速率控制决定要花费的总比特数。x264' 默认速率控制是 CRF 23 ( ffmpeg -crf 23); 如果您想要较小的文件,请使用-preset veryslow -crf 26或使用其他方法为相同的复杂性花费更少的位,从而导致更多的模糊。它是对数的,所以将 CRF 增加几个数字可以将比特率改变 2 倍。对于几乎透明的质量,-crf 18或者20通常是好的,但需要更多的比特率。
CRF 模式不是真正的恒定质量(SSIM、PSNR 或任何其他指标)。通过更快的编码预设,x264 使用更简单的决策过程来决定如何/在哪里花费比特,从而导致相同 CRF 设置的比特率发生一些变化。
正如@szatmary 解释的那样,使用不同的搜索工具来查找冗余,更高的预设可能会找到一种更小的方法来编码看起来稍微差一点的东西。或者对一些看起来更好但只是稍大的块进行编码的方法。 根据这些事情的平均情况,不同质量预设的相同 CRF 将具有不同的质量和不同的比特率。
这就是为什么您不会以相同的质量获得越来越小的文件;-preset veryfast通常看起来更糟。 -preset ultrafast即使在高比特率下通常也很糟糕,但其他预设看起来就像veryfast你花更多的比特率一样好。
较小的文件并不意味着“更好的压缩”。请记住,质量也是可变的。如果您曾经使用ffmpeg -i in.mp4 -ssim 1 -tune ssim -preset veryslow out.mkvlibx264 来计算 SSIM 视觉质量指标,您会发现非常慢的每比特率质量比非常快更好。(如果您要对质量进行基准测试,请以固定比特率进行,即 2-pass 而不是 CRF。请参阅https://trac.ffmpeg.org/wiki/Encode/H.264)
请记住,使图像对人类看起来更好的心理视觉优化(例如-psy-rd=1.0:0.15)可能会在某些质量指标上得分更差,因此在实际使用中您不希望-tune ssim. Psy-rd 意味着在优化速率与失真的权衡时考虑人类感知。AQ(自适应量化)是另一种 psy 优化,但与更简单的PSNR质量指标不同,SSIM足够复杂,可以识别为有益的优化。
人类倾向于将高(空间)频率噪声视为小尺度的细节,即使它与源图像中的细节不同。我们的眼睛喜欢细节而不是模糊。例如,量化产生的边缘和振铃伪影 = 舍入 DCT 系数实际上比模糊所有东西看起来更好,如果它们很小的话。当您正常观看时,暂停和放大时看起来更糟的东西可能会令人愉悦地欺骗您的眼睛。(h.264 有一个循环解块滤波器,在显示帧之前应用并用作参考,因此它比早期的编解码器(如 DivX / h.263)更容易避免阻塞。启动它只会在低比特率下模糊所有内容)。
这里的想法类似于 MP3 和其他高级音频编解码器对声音所做的工作,只是有更多的心理声学优化空间,因为大声的声音确实阻止耳朵听到附近频率的安静东西。
如果您编码一次以长时间保留结果,和/或通过互联网提供它,请使用-preset veryslow. 或者至少 -preset medium。您只需支付一次 CPU 成本,并重复获得文件大小(对于给定质量)的节省。
但是,如果您只打算观看一次编码,例如将视频放在移动设备上,您将在那里观看一次然后将其删除,那么-preset faster -crf 20如果您有存储空间,则是有意义的。只需多花点钱。
脚注 1:在无损压缩中,您在文件大小与压缩和/或解压缩速度之间进行权衡(这可能有所不同;一些编解码器解压缩速度非常快,即使它们允许良好的慢速压缩)。实际上,如果您想了解该级别的详细信息,RAM 使用率/缓存占用空间也可能是一个变量。在无损压缩中,质量固定为“完美”,例如 x264-qp 0
h.264 解码性能可能会随着参考帧的数量而有所不同,更多的参考帧具有更大的内存占用,因此 CPU 解码器的缓存未命中可能更多。但通常 h.264 是由硬件解码的。与许多无损压缩方案一样,解码性能的巨大变化仅适用于完全不同的编解码器(如 h.265),而不是同一编解码器的不同选项。额外的编码时间用于寻找对相同位进行编码的不同方法,但只有一种解码方法。
是的,作为Hi444PP 配置文件的一部分,h.264 具有无损模式。不,您不想通过互联网使用它;除了 FFmpeg 之外,许多解码器都缺乏对这一特殊功能的支持,而且比特率非常高,例如 1080p30 YUV 4:2:0 或 RGB 4:4:4 的比特率是 100 到 200 Mbit/s。 How to create an uncompressed AVI from a series of 1000's PNG images using FFMPEG有一些来自 Sintel 预告片的测试结果。
脚注 2:其他编解码器,如 h.265(使用 x265 编码器)或 VP9 可以提供更好的速率失真权衡,但代价是要花费更多的 CPU 时间进行编码。对于固定的编码时间,我不确定 x265 是否比 x264 有任何优势。但是解码器与 h.265 的兼容性不如 h.264 广泛。
解码兼容性对于 h.264主配置文件非常好,并且希望这些天也能成为高配置文件。(8x8 DCT 最适用于 1080p 等高分辨率,尤其是 4k。)x264 的默认设置为高配置。一些过时的移动设备可能只有 h.264 基线配置文件的硬件解码,但每比特率的质量明显更差(没有 B 帧,也没有 CABAC,只有在将结构无损编码为比特流的最后一步效率较低的 CAVLC。 )
sza*_*ary 13
预设不控制编码的速度。它们启用或禁用压缩功能(通常称为“工具”)。使用较慢的预设时,会启用更多工具。但由于每个视频都不同,因此不可能每次都为每个视频获得完美的平衡。
对于您的特定内容,其中一种工具会占用更多 CPU 和更多位,但它会生成更高质量的视频,同时仍适合比特率包络。
| 归档时间: |
|
| 查看次数: |
22926 次 |
| 最近记录: |