【问题标题】:How to add black borders to video如何为视频添加黑色边框
【发布时间】:2022-03-23 14:04:19
【问题描述】:

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

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

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

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

感谢您的帮助:)

【问题讨论】:

  • 这超出了 SO 的范围,这是关于编写代码的。然而,我想知道你想要达到什么目的。我所知道的所有视频播放器都允许您在输出表面和视频流的比例不匹配时选择自动添加波段或拉伸以适应。除了使您的视频文件更重并且使分辨率较窄的人(他们的黑带和他们添加的播放器都在顶部/底部)烦人之外,我不明白这一点。
  • 感谢您的宝贵时间!关键是人们能够导出 1920*1080 的录制视频并在下载后立即对其进行编辑。似乎如果格式不完全是 1920*1080 他们必须在之后进行转换。所以关键是在下载录制的视频后给他们更少的工作。

标签: ffmpeg console


【解决方案1】:

使用

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

比例尺将确保其输出适合 1920x1080。然后垫子会填满。

【讨论】:

  • 用单引号将表达式括起来。
  • 这个找了很久,效果很好,谢谢
  • 只是为了自我控制:ffmpeg -i SRC -vf 'scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1' DEST
  • @rayryeng 在 Windows 10 的命令行中运行此命令会给出错误 No such filter: 'scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1'。您必须用双引号替换引号。
  • @izogfif 谢谢。我不得不在 Mac OS 上使用单引号。可惜你必须在不同的操作系统上使用不同的引号。
【解决方案2】:

为视频的所有侧面添加边框,并设置您想要的填充

在此处输入一个视频,并在左侧、右侧、顶部和底部添加 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:color=red

  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,那么 width + 40 and height + 40 and x,y = 20
  5. color=red 用于边框颜色

【讨论】:

  • 真的很有帮助,谢谢!使用它,将 1024x1024 图片放入 2048x2048 帧: ffmpeg -i input.mp4 -filter_complex "[0]pad=w=1024+iw:h=1024+ih:x=512:y=512:color=black " fillout.mp4
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    目标:通过填充 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2014-03-13
      相关资源
      最近更新 更多