更改视频分辨率ffmpeg
Change video resolution ffmpeg
我有不同分辨率的视频。我希望所有这些都具有 480x320 的分辨率。我试过命令:
ffmpeg -i %s_ann.mp4 -vf scale=480x320,setsar=1:1 %s_annShrink.mp4' %(dstfile,dstfile)
但视频的输出是大小为 0 kb 的文件。
我做错了什么?
我想这里真的有两个问题...
- 如何批量转换文件?
- 如何自动缩放视频?
如何批量转换文件?
这些脚本应该可以解决问题...
Windows
for %%i in (*.mp4) do (
ffmpeg -y -i "%%i" << TODO >> "%%~ni_shrink.mp4"
)
Linux(未测试!)
for i in *.mp4;
do
ffmpeg -y -i "$i" << TODO >> "${i%.mp4}_shrink.mp4";
done
(我不太确定 Linux 脚本中的输出文件扩展,值得验证。)
如何自动缩放视频?
这有点棘手。当你有你的命令时,纵横比可能会变得混乱。这里的选项...
- 缩放视频,忽略纵横比。结果 = 视频失真
- 缩放视频,保持宽高比,以便调整缩放后的高度(或宽度)以适合。结果 = 最佳
- 缩放视频,保持纵横比并用黑条填充,使视频大小恰好为 480x320。结果 = wasted/increased 文件大小
- 在缩放之前裁剪输入,使其 "fills" 为 480x320 分辨率。结果 = 视频不完整
选项 2 将是首选解决方案,否则您(可能不必要地)增加了输出文件的大小。选项 3,我将提供经过部分测试的解决方案。选项4我什至不打算碰。
选项 2:缩放视频,保持纵横比以便调整高度以适合
ffmpeg -y -i "%%i" -vf scale=480:-2,setsar=1:1 -c:v libx264 -c:a copy "%%~ni_shrink.mp4"
选项 3:缩放视频,保持宽高比并用黑条填充,使视频大小恰好为 480x320
ffmpeg -y -i "%%i" -vf "[in]scale=iw*min(480/iw\,320/ih):ih*min(480/iw\,320/ih)[scaled]; [scaled]pad=480:320:(480-iw*min(480/iw\,320/ih))/2:(320-ih*min(480/iw\,320/ih))/2[padded]; [padded]setsar=1:1[out]" -c:v libx264 -c:a copy "%%~ni_shrink.mp4"
可以使用ffmpeg工具,输入命令
ffmpeg -i input.mp4 -vf scale=480:320 output_320.mp4
或者如果您想更改视频宽高比,请使用 setdar
ffmpeg -i input.mp4 -vf scale=480:320,setdar=4:3 output_320.mp4
您可以使用以下命令进行放大和缩小:
ffmpeg -i input.mp4 -vf scale=640x480:flags=lanczos -c:v libx264 -preset slow -crf 21 output_compress_480p.mp4
使用 FFMPEG 升级视频
ffmpeg -i input.mp4 -vf scale=1920x1080:flags=lanczos -c:v libx264 -preset slow -crf 21 output_compress_1080p.mp4
我有不同分辨率的视频。我希望所有这些都具有 480x320 的分辨率。我试过命令:
ffmpeg -i %s_ann.mp4 -vf scale=480x320,setsar=1:1 %s_annShrink.mp4' %(dstfile,dstfile)
但视频的输出是大小为 0 kb 的文件。
我做错了什么?
我想这里真的有两个问题...
- 如何批量转换文件?
- 如何自动缩放视频?
如何批量转换文件?
这些脚本应该可以解决问题...
Windows
for %%i in (*.mp4) do (
ffmpeg -y -i "%%i" << TODO >> "%%~ni_shrink.mp4"
)
Linux(未测试!)
for i in *.mp4;
do
ffmpeg -y -i "$i" << TODO >> "${i%.mp4}_shrink.mp4";
done
(我不太确定 Linux 脚本中的输出文件扩展,值得验证。)
如何自动缩放视频?
这有点棘手。当你有你的命令时,纵横比可能会变得混乱。这里的选项...
- 缩放视频,忽略纵横比。结果 = 视频失真
- 缩放视频,保持宽高比,以便调整缩放后的高度(或宽度)以适合。结果 = 最佳
- 缩放视频,保持纵横比并用黑条填充,使视频大小恰好为 480x320。结果 = wasted/increased 文件大小
- 在缩放之前裁剪输入,使其 "fills" 为 480x320 分辨率。结果 = 视频不完整
选项 2 将是首选解决方案,否则您(可能不必要地)增加了输出文件的大小。选项 3,我将提供经过部分测试的解决方案。选项4我什至不打算碰。
选项 2:缩放视频,保持纵横比以便调整高度以适合
ffmpeg -y -i "%%i" -vf scale=480:-2,setsar=1:1 -c:v libx264 -c:a copy "%%~ni_shrink.mp4"
选项 3:缩放视频,保持宽高比并用黑条填充,使视频大小恰好为 480x320
ffmpeg -y -i "%%i" -vf "[in]scale=iw*min(480/iw\,320/ih):ih*min(480/iw\,320/ih)[scaled]; [scaled]pad=480:320:(480-iw*min(480/iw\,320/ih))/2:(320-ih*min(480/iw\,320/ih))/2[padded]; [padded]setsar=1:1[out]" -c:v libx264 -c:a copy "%%~ni_shrink.mp4"
可以使用ffmpeg工具,输入命令
ffmpeg -i input.mp4 -vf scale=480:320 output_320.mp4
或者如果您想更改视频宽高比,请使用 setdar
ffmpeg -i input.mp4 -vf scale=480:320,setdar=4:3 output_320.mp4
您可以使用以下命令进行放大和缩小:
ffmpeg -i input.mp4 -vf scale=640x480:flags=lanczos -c:v libx264 -preset slow -crf 21 output_compress_480p.mp4
使用 FFMPEG 升级视频
ffmpeg -i input.mp4 -vf scale=1920x1080:flags=lanczos -c:v libx264 -preset slow -crf 21 output_compress_1080p.mp4