War*_*ica 12 video h.264 ffmpeg quicktime video-encoding
我的佳能 60D 在录制视频时创建 .MOV 文件,我发现 .MOV 容器有一个 H264 视频流和一个 PCM 音频流。
我已经使用 ffmpeg 和 GSpot 来查看我的一些视频,我发现比特率似乎相当高(640x480 为 22,000kbps,1920x1080 为 45,000)。
我想减小文件的大小,但要保持相当高的质量。我尝试了我能想到的最简单的方法,降低比特率,这符合我的预期:将比特率减半,文件大小大约减半。但我想知道是否有办法确定“好的”目标比特率,或者尝试进行可变比特率是否有任何意义。
slh*_*hck 21
但我想知道是否有办法确定“好的”目标比特率……
一个好的目标比特率是这样的比特率:
22 Mbit/s 或 45 Mbit/s 对于普通用户来说确实相当高,尤其是对于像 h.264 这样已经压缩的视频。您绝对可以继续将比特率降低到“合理”值,始终考虑您可以负担多少存储容量以及您想要损失多少质量。
如果您真的不需要大小或没有编辑它的处理能力,您也可以将 1080p 视频调整为 720p。
...或者如果尝试进行可变比特率有任何意义
恒定码率的目的是适应流媒体场景,该场景存在限制传输视频的最大码率的瓶颈。在当今的多媒体世界中,这不再有意义。
当您将视频压缩为恒定的每秒位数时,您基本上是告诉编码器始终使用相同数量的位来编码相同的时间帧。这是最好的方法吗?正如您现在可能已经猜到的那样,事实并非如此。引用Handbrake的CRF 指南(稍后我会回到这个话题):
与运动时相比,眼睛在静止物体中能感知到更多细节。因此,视频压缩器可以在物体移动时应用更多压缩(减少更多细节),而在物体静止时应用更少压缩(保留更多细节)。主观上,视频似乎具有更高的质量。
因此,尽可能使用可变比特率确实是有意义的。即使在恒定比特率视频的相同文件大小下,它也会使视频看起来更好。
更重要的是,当您告诉它们使用恒定比特率时,大多数编码器(最著名的编码器是x264)通常表现非常糟糕。在他们想在一个帧上花费多少位的意义上,最好给他们更多的“自由”。毕竟,那是编码器的工作,而不是你。这就是所谓的“恒定质量”。
够了——这在实践中意味着什么?如果您使用 FFmpeg 对视频进行编码,那么您已经在使用一个足够好的工具。如果您现在还安装了 x264,并使用两者的最新版本,那么您使用的是目前免费提供的最好的编码器之一。与其用固定的比特率编码,不如让 x264 选择它想花多少钱。通过使用“恒定速率因子”选项来执行此操作。
在一个非常简单的情况下,这意味着设置一个介于 17 和 23 之间的值。我选择 MP4 而不是 MOV 作为输出容器,因为有更好的多路复用工具可用:
ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4
Run Code Online (Sandbox Code Playgroud)
值越低,质量越好,输出越大。反之亦然,越高,质量越低。同时,您当然会降低所需的平均比特率。查看x264 编码指南以获取有关ffmpeg.
您现在的任务是找到一个 CRF 值:
是的,这涉及大量编码和反复试验,但这是您调整和编码视频时的日常工作。
哦,如果您不喜欢命令行,Handbrake是一个免费的跨平台工具,功能完全相同。它甚至还有一个 CRF 滑块:

| 归档时间: |
|
| 查看次数: |
14851 次 |
| 最近记录: |