如何使用FFmpeg缩小视频画面并添加黑边
如何使用FFmpeg缩小视频画面并添加黑边
嘿,太懂你的需求了——给CRT屏幕看视频,得把画面缩小一圈留黑边放字幕,还得保持原视频的分辨率对吧?刚好FFmpeg就能完美搞定这个,我给你一步步说清楚怎么操作。
首先,核心思路是先用scale滤镜把视频画面按比例缩小,再用pad滤镜把黑边补上,还原到原视频的分辨率。这里给你一个直接能用的命令模板,你只要替换对应参数就行:
ffmpeg -i input.mp4 -filter_complex "[0:v]scale=缩小后的宽度:缩小后的高度,pad=原宽度:原高度:(ow-iw)/2:(oh-ih)/2:black[v]" -map "[v]" -map 0:a -c:a copy output.mp4
我给你拆解一下每个部分的作用,方便你调整:
-i input.mp4:替换成你自己的输入视频文件名scale=缩小后的宽度:缩小后的高度:这里要注意必须和原视频的宽高比一致,比如原视频是1920x1080(16:9),那你可以设成1600x900、1440x810这类同比例的尺寸,不然画面会变形pad=原宽度:原高度:(ow-iw)/2:(oh-ih)/2:black:原宽度:原高度填你视频原来的分辨率,后面的(ow-iw)/2和(oh-ih)/2是让缩小后的画面自动居中,black指定黑边颜色(要是想换别的颜色,也可以用十六进制码,比如#FFFFFF是白色)-map "[v]":指定用处理后的视频流-map 0:a -c:a copy:直接复制原音频,不用重新编码,能省不少时间output.mp4:替换成你想要的输出文件名
举个实际例子,假设你的原视频是1920x1080,想缩到1600x900加黑边,命令就是:
ffmpeg -i myvideo.mp4 -filter_complex "[0:v]scale=1600:900,pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black[v]" -map "[v]" -map 0:a -c:a copy myvideo_with_borders.mp4
另外给你两个小提示:
- 不知道原视频分辨率?先跑
ffmpeg -i input.mp4,输出里找Stream #0:0那一行,里面会写1920x1080这类信息 - 要是觉得黑边不够宽,直接把
scale的尺寸改小就行,比如缩到1280x720,黑边就会更宽,字幕放进去更显眼
备注:内容来源于stack exchange,提问作者Etcetera




