使用 ffmpeg 以 vp8+vorbis 编码定位特定文件大小
Targeting a specific file size in vp8+vorbis encoding using ffmpeg
我有几个视频要编码为 vp8 视频和 Vorbis 音频。这是我目前使用的 FFmpeg 命令:
ffmpeg -y -i input.mp4 -map 0:v:0 -s 640x360 -filter:v fps=20 -c:v libvpx -crf 10 -b:v 200k -map 0:a:0 -b:a 48k -c:a libvorbis output.webm
我想控制输出文件大小并将其限制为 3MB 而不剪辑视频,但反而会降低质量。所以我不能使用 -fs 3MB
.
如何根据视频和音频比特率和持续时间来确定文件大小?
如何在不裁剪的情况下限制文件大小?
10 秒输入的示例,输出刚好低于 3 MB 输出:
3 MB * 8000 / 10 seconds - 48kb audio bitrate - 1% muxing overhead = -b:v 2328k
针对特定输出文件大小时进行两次编码:
ffmpeg -y -i input.mp4 -map 0:v:0 -filter:v "scale=640:360,fps=20" -c:v libvpx -b:v 2328k -pass 1 output.webm
ffmpeg -y -i input.mp4 -map 0:v:0 -filter:v "scale=640:360,fps=20" -c:v libvpx -b:v 2328k -map 0:a:0 -c:a libvorbis -b:a 48k -pass 2 output.webm
参见:
我有几个视频要编码为 vp8 视频和 Vorbis 音频。这是我目前使用的 FFmpeg 命令:
ffmpeg -y -i input.mp4 -map 0:v:0 -s 640x360 -filter:v fps=20 -c:v libvpx -crf 10 -b:v 200k -map 0:a:0 -b:a 48k -c:a libvorbis output.webm
我想控制输出文件大小并将其限制为 3MB 而不剪辑视频,但反而会降低质量。所以我不能使用 -fs 3MB
.
如何根据视频和音频比特率和持续时间来确定文件大小?
如何在不裁剪的情况下限制文件大小?
10 秒输入的示例,输出刚好低于 3 MB 输出:
3 MB * 8000 / 10 seconds - 48kb audio bitrate - 1% muxing overhead = -b:v 2328k
针对特定输出文件大小时进行两次编码:
ffmpeg -y -i input.mp4 -map 0:v:0 -filter:v "scale=640:360,fps=20" -c:v libvpx -b:v 2328k -pass 1 output.webm
ffmpeg -y -i input.mp4 -map 0:v:0 -filter:v "scale=640:360,fps=20" -c:v libvpx -b:v 2328k -map 0:a:0 -c:a libvorbis -b:a 48k -pass 2 output.webm
参见: