如何减少视频的文件大小?出于某种原因,通过电话拍摄了巨大的视频。其中最糟糕的是 20 分钟的视频,占用了整个 13 GB。如何缩小这些文件的大小?它们是以 H.264 和 MPEG-4 AAC 编码的 mp4,以 30 fps 播放。
如果质量下降也没关系。
我尝试使用avconv
降低分辨率,但即使输出的视频尺寸更小,尺寸也奇怪地增加了。
减少这些文件大小的好方法是什么?
and*_*.46 18
要减小 mp4 的大小,FFmpeg有两个不错的选择:
以下两者的详细信息:
1. 使用 FFmpeg 的 Constant Rate Factor (CRF) 选项调整大小:
在 FFmpeg 中,CRF 设置从 0 到 51 不等,其中 0 表示无损,51 表示质量非常差。默认值为 23,您需要通过一些实验为您的特定视频的文件大小和视频质量找到“最佳位置” 。
示例命令行将是:
ffmpeg -i input.mp4 \
-c:v libx264 -preset slow -crf 22 \
-c:a copy \
output.mp4
Run Code Online (Sandbox Code Playgroud)
请注意,在此命令行中,视频被重新编码,音频被简单地复制。需要考虑的事项:
-crf 24
依此类推(逐渐增加crf 整数),直到找到视频质量和文件大小之间可接受的折衷。crf 20
依此类推(逐渐减少crf 整数),直到找到视频质量和文件大小之间可接受的折衷。2. 使用 FFmpeg 的 'set bitrate' + '2 pass encode' 选项调整大小:
另一种可能不会产生像 CRF 示例那样好的结果的选择是使用您选择的设置比特率并使用 2 pass 编码。以下示例是单个命令:
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
Run Code Online (Sandbox Code Playgroud)
同样在这个例子中,视频被重新编码,音频被简单地复制。需要考虑的事项:
继续这样做,直到您在视频质量和文件大小之间找到可接受的折衷方案。
参考:
所以我想通了。ffmpeg 中的“-b”标志设置比特率。我还发现 1,000,000 是一个很好的通用使用值,它在文件大小和质量之间提供了一个不错的权衡。
所以运行:
ffmpeg -i inputfilename.mp4 -b 1000000 outputfilename.mp4
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以将 1000000 替换为另一个比特率值。此外,您可以包含一个“-s WxH”标志来设置输出视频的大小。因此,要使输出视频为 720p,您需要包含“-s 1080x720”