我有一台带有相机的Nexus 6p。它的设置为1080p,30fps。 Here's 5秒样本(11 MB)。
这款手机的视频平均大约为17 Mbps。我尝试使用带有-c:v libx264 -crf 23 -preset veryslow
的ffmpeg来压缩它,结果大约是5.5 MB,大约是9 Mbps。
我认为这个比特率太多了。当我查看torrent文件列表时,我可以看到平均大小为3 GB的高质量视频,如果这样的电影平均长度为90分钟,则大约为4-5 Mbps,听起来不错。
我想知道,为什么差别很大?我可以注意到我的视频是嘈杂/颗粒状的(可以通过手机预测),这可能会降低可压缩性。我尝试了几个ffmpeg过滤器,比如hqdn3d和atadenoise,但噪音大部分仍然存在(也许我没有玩过它)。然后我想,视频也是不稳定的(这也是预期的),这也可能降低可压缩性(甚至使时间噪声滤波效率降低)。我试图用deshake过滤器来稳定它,但这也无济于事。
我知道我可以将带宽限制在任何我喜欢的范围内,但必须有一个理由说ffmpeg认为它需要高带宽来维持一定的质量,而较低的带宽只会降低质量。
为什么这些视频的比特率如此之高?在保持甚至提高质量的同时压缩它们的最佳方法是什么?
答案 0 :(得分:1)
您正在谈论的4-5Mbps电影中,有99.9%是yuv420p
(电视范围),而猫视频是PC范围:
ffprobe -i x.mp4
[...] yuvj420p(pc, bt470bg/bt470bg/smpte170m), 1920x1080, 16966 kb/s, [...]
当我运行您的命令时...
ffmpeg -i x.mp4 -c:v libx264 -level 4.0 -preset veryslow x_pc.mp4
({-crf 23
是默认设置,因此无需指定)
...我最终得到的是'x_pc.mp4',这是一个PC范围的视频,文件大小为5.15MB,比特率为7.92Mbps。
当我将您的视频转换为常规电视范围时...
ffmpeg -i x.mp4 -pix_fmt yuv420p -c:v libx264 -level 4.0 -preset veryslow x_tv.mp4
...我最后得到的是'x_tv.mp4',这是电视范围的视频,文件大小为4.15MB,比特率为6.38MBps。
因此,速度已经降低了1.5Mbps,但除此之外,您还可以进行一些去噪处理。
过去,我曾经使用过FFT3DFilter(一种Avisynth过滤器),但效果非常好。今天我发现FFmpeg也有一个:
ffmpeg -i x.mp4 -vf fftdnoiz=sigma=3 -pix_fmt yuv420p -c:v libx264 -level 4.0 -preset veryslow x_fft3d_tv.mp4
我最终得到了'x_fft3d_tv.mp4',这是一种去噪电视范围的视频,文件大小为3.35MB,比特率仅为5.15Mbps,仍然是非常好的视频质量。我无法分辨出与原始版本的区别。
要提高可压缩性,这些是我能想到的选择。
答案 1 :(得分:0)
对我来说,720p下采样确实可以解决问题。