如何缩小视频文件大小?出于某种原因,手机拍摄的视频文件很大。最糟糕的是 20 分钟的视频占用了整整 13 GB。如何缩小这些视频文件大小?它们是用 H.264 和 MPEG-4 AAC 编码的 mp4,播放速度为 30 fps。
如果质量下降也没关系。
我尝试使用avconv
降低分辨率,但尽管这样输出的视频尺寸较小,但尺寸却奇怪地增加。
有什么好方法可以减少这些文件的大小?
答案1
为了减少你的mp4的大小,你必须二FFmpeg 的良好选择:
- 尝试使用恒定速率因子 (CRF) 设置来找到匹配项视频输出尺寸和视频质量
- 尝试设置比特率并选择 2 次编码。
以下两者的详细信息:
1. 使用 FFmpeg 的恒定速率因子 (CRF) 选项调整大小:
在 FFmpeg 中,CRF 设置在 0-51 之间变化,0 表示无损,51 表示质量极差。默认值为 23,您需要找到特定视频文件大小的“最佳点”和通过一些实验来提高视频质量。
示例命令行如下:
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -crf 22 \
-c:a copy \
output.mp4
请注意,在此命令行中,视频是重新编码音频很简单复制跨越。需要考虑的事项:
- 如果尺寸仍然太大并且视频质量仍然可以接受,你会尝试
-crf 24
等等(逐步增加我们可以使用 crf 整数来查找文件大小,直到找到视频质量和文件大小之间可接受的折衷点。 - 如果视频质量太穷了你会尝试
crf 20
等等(逐步减少我们可以使用 crf 整数来查找文件大小,直到找到视频质量和文件大小之间可接受的折衷点。
2. 使用 FFmpeg 的“设置比特率”+“2 遍编码”选项调整大小:
另一个选择,可以说不是产生与 CRF 示例一样好的结果的方法是使用您选择的设置比特率并使用 2 遍编码。以下示例是单个命令:
ffmpeg -y -i input.mp4 \
-c:v libx264 -preset slow -b:v 1000k -pass 1 \
-c:a copy -f mp4 /dev/null && \
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -b:v 1000k -pass 2 \
-c:a copy \
output.mp4
在此示例中,视频再次被重新编码,音频则被简单复制。需要考虑的事项:
- 视频仍然太大?减少比特率……
- 品质太差?增加比特率……
继续这样做,直到找到视频质量和文件大小之间可接受的折衷方案。
参考:
- FFmpeg 和 H.264 编码指南:FFmpeg 的 H.264 编码规范指南
答案2
所以我搞明白了。ffmpeg 中的“-b”标志设置比特率。我还发现 1,000,000 是一个很好的通用值,可以在文件大小和质量之间提供适当的权衡。
因此运行:
ffmpeg -i inputfilename.mp4 -b 1000000 outputfilename.mp4
如果需要,您可以将 1000000 替换为其他比特率值。此外,您还可以添加“-s WxH”标志来设置输出视频的大小。因此,要使输出视频为 720p,您需要添加“-s 1080x720”