我的佳能 60D 在录制视频时创建 .MOV 文件,我发现 .MOV 容器有一个 H264 视频流和一个 PCM 音频流。
我使用 ffmpeg 和 GSpot 来观看我的一些视频,我发现比特率似乎相当高(640x480 为 22,000kbps,1920x1080 为 45,000)。
我想减小文件大小,但保持较高的质量。我尝试过最简单的方法,即降低比特率,结果和我预期的一样:将比特率减半,文件大小也减半。但我想知道是否有办法确定“良好”的目标比特率,或者尝试可变比特率是否有意义。
答案1
但我想知道是否有办法确定“良好”的目标比特率……
一个好的目标比特率是以下比特率之一:
- 由您流式传输材料的网络支持(例如 3G 网络、家庭 WiFi 等),这很容易计算
- 看起来不错你,这是一个非常主观的衡量标准
对于普通用户来说,22 Mbit/s 或 45 Mbit/s 确实相当高,尤其是对于已经压缩的视频,如 h.264。您绝对可以继续将比特率降低到“合理”值,始终要考虑您能负担得起多少存储容量以及您愿意损失多少质量。
如果您不需要太大尺寸或没有处理能力来编辑它,您也可以将 1080p 视频调整为 720p。
… 或者尝试可变比特率是否有意义
恒定比特率的目的是适应流媒体场景,这种场景中存在一个瓶颈,限制了传输视频的最大比特率。在今天的多媒体世界中,这不一定再有意义了。
当你将视频压缩为每秒恒定的比特数时,你基本上告诉编码器始终使用相同数量的比特来编码相同的时间帧。这是最好的方法吗?你现在可能已经猜到了,不是。引用CRF指南来自 Handbrake(我稍后会回顾这一点):
眼睛在静止物体上感知到的细节比在运动物体上感知到的细节更多。因此,视频压缩器可以在物体移动时施加更多压缩(丢失更多细节),而在物体静止时施加较少压缩(保留更多细节)。从主观上讲,视频看起来质量更高。
所以做尽可能使用可变比特率是有意义的。即使文件大小与恒定比特率视频相同,它也能使视频看起来更好。
更重要的是,大多数编码器——最著名的是x264– 经常表演非常当你告诉他们使用恒定比特率时,情况就很糟糕了。最好给他们多一点“自由”,让他们决定在一帧上要花多少比特。毕竟,这是编码器的工作,而不是你的工作。这就是所谓的“恒定质量”。
够了——这在实践中意味着什么?如果你使用 FFmpeg 来编码视频,那么你已经使用了一个足够好的工具。如果你现在还安装了 x264,并使用两者的最新版本,那么你正在使用目前免费提供的最佳编码器之一。不要使用固定比特率进行编码,而是让 x264 选择它想要花费多少。使用恒定利率因子选项。
在一个非常简单的情况下,这意味着设置一个介于 17 和 23 之间的值。我选择 MP4 作为输出容器,而不是 MOV,因为更好的工具对于可用的再复用:
ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4
值越低,质量越好,输出越大。反之,值越高,质量越低。同时,您当然会降低所需的平均比特率。勾选x264 编码指南了解有关 的更多信息ffmpeg
。
你的任务是找到一个 CRF 值:
- 将总比特率降低到您可以承受的程度
- 不会降低太多质量,因此视频仍然看起来不错
是的,这涉及大量的编码和反复试验,但当您调整和编码视频时,这是日常工作。
哦,如果你不喜欢命令行,手刹是一款免费的跨平台工具,功能完全相同。它甚至有一个 CRF 滑块:
答案2
尝试 HandBrake CLI
我想缩小一些 MOV 文件,但不想了解有关视频选项的所有细节。HandBrake 命令行界面是我使用的。预设很好:
HandBrake 提供硬编码、出厂预设,与 MacGui 中的内置预设完全相同。
就我而言,这个方法效果很好:
HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"
如果没有预设,输出会非常小,但质量不佳。“正常”预设对我来说看起来不错,但您可以使用 查看其他可用预设HandBrakeCLI --preset-list
,或者如果您愿意,可以自己调整所有选项。