如何给视频添加黑边

问题描述 投票:0回答:5

所以我使用ffmpeg将视频转换为19201080像素,我找到了两种方法,第一个是将视频拉伸到19201080,但看起来有点拉伸。我为此使用了这个命令:

./ffmpeg_darwin -i SRC -vf scale=1920:1080,setdar=16:9 DEST

另一个选项与没有 setdar 的情况相同,但这只是将分辨率调整为起始分辨率 (1728*1080)。

我想用黑色边框填充宽度的 192 像素。有某种选择可以这样做吗?或者是否有另一个命令行可以实现此目的?

ffmpeg console
5个回答
43
投票

使用

-vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1"

电子秤将确保其输出大小在 1920x1080 范围内。然后垫子将其填充。


13
投票

在视频的所有侧面添加边框,并设置所需的填充

在这里输入一个视频并添加 padding=20 左右上下

"-i",path1,"-filter_complex","[0]pad=w=20+iw:h=20+ih:x=10:y=10:color=red; output

[0]pad=w=20+iw:h=20+ih:x=10:y=10:颜色=红色

  1. 这里,w=20+iw 表示您的视频宽度 + 20,因为您想要添加边框,所以我们需要为 10 个右侧焊盘和 10 个左侧焊盘添加填充 20
  2. 与高度 h=20+ih 相同,因此 +20 到视频高度,顶部焊盘为 10,底部焊盘为 10

  3. x=10:y=10 用于如果 x=0,y=0,则边框不显示在左侧和顶部,而显示边框在 20 的右侧和底部;

  4. 如果我们想添加边框 20,那么宽度 + 40 和高度 + 40 和 x,y = 20
  5. color=red 用于边框颜色


2
投票

目标:通过填充 192 像素宽度,将 1728x1080 视频变成 1920x1080 视频。

解决方案:在视频的每一侧添加96像素宽的黑条。

解决方案,命令:

ffmpeg -i input.mp4 -filter_complex "[0]pad=w=1920:h=ih:x=96:y=0:color=black" output.mp4

解决方案、命令、解释:w=1920 是输出宽度,h=ih 是输出高度(不变),x=96 和 y=0 表示原始视频将放置在左上角右侧 96 个像素处输出布局;将输出布局视为 1920x1080 的矩形,由于 color=black,它是黑色的。

@Gyan 的答案对我不起作用,无论我使用单引号还是双引号。

@Sanjay Hadiya 的回答并没有真正解决OP的问题。另外,桑杰·哈迪亚(Sanjay Hadiya)的回答写得不好且令人困惑(但它确实对我有帮助);我很好奇他是否会讲 ESL。


0
投票

谢谢大家。将您的答案调整为放置在包含我要转换的文件的目录中的批处理文件。

setlocal enabledelayedexpansion

GOTO :EndComment
  For low resolution videos that look worse when the display automatically
  makes them full screen.  This script upscales the video using horizontal 
  and vertical padding (black bars).       
:EndComment

set ffmpegExe="C:\Utilities\ffmpeg\bin\ffmpeg.exe"
set "oldScale=848:480"
set "newScale=1920:1080"


for %%f in (*.mp4) do (
  set str=%%f
  %ffmpegExe% -i "%%f" -vf "scale=%oldScale%:force_original_aspect_ratio=decrease,pad=%newScale%:(ow-iw)/2:(oh-ih)/2,setsar=1" "!str:.mp4=_new.mp4!"
  )
endlocal

0
投票

我今天遇到了类似的问题,虽然这是一个老问题,但我想出了一个稍微更通用的信箱解决方案(添加黑色边框),而无需手动指定尺寸:

ffmpeg -i in.mp4 -vf "pad=width=iw:height=trunc(iw/4)*3:x=(ow-iw)/2:y=(oh-ih)/2:color=black" -c:a copy out.mp4

稍微细分一下:

  • width=iw
    输出宽度与输入宽度相同,我们在顶部和底部进行填充
  • height=trunc(iw/4)*3
    高度应为宽度的 75% (4/3),因此我们会得到 4:3 宽高比的视频
  • x=(ow-iw)/2
    y=(oh-ih)/2
    将输出居中

要翻转它并拍摄视频(例如纵向模式)并向两侧添加黑色边框(信箱),只需翻转

width
height

ffmpeg -i in.mp4 -vf "pad=height=ih:width=trunc(ih/3)*4:x=(ow-iw)/2:y=(oh-ih)/2:color=black" -c:a copy out.mp4

一个常见的错误是,根据视频比例,填充转换是错误的,例如,如果我拍摄纵向视频并尝试使用第一个命令进行转换,ffmpeg 将尝试在顶部添加填充,但它不能,所以转换失败:

[Parsed_pad_0 @ 0x6000027940b0] Padded dimensions cannot be smaller than input dimensions.
[Parsed_pad_0 @ 0x6000027940b0] Failed to configure input pad on Parsed_pad_0
Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while processing the decoded data for stream #0:0
Conversion failed!

解决方案是使用另一个命令在两侧添加填充。

© www.soinside.com 2019 - 2024. All rights reserved.