【问题标题】:FFMPEG rotate command show black color on edgesFFMPEG 旋转命令在边缘显示黑色
【发布时间】:2022-12-12 08:29:10
【问题描述】:

我正在使用命令ffmpeg -i NoAudio.mp4 -i cat-face-emoji.png -filter_complex "[1]rotate=a=140[ov1];[0][ov1]overlay=480:270" -c:a copy output.mp4 -y 将图像旋转 140 度,但边缘显示黑色背景。

这里输出视频:https://app.dadan.io/video/share/nmmU8uiyCl2YVYm4

我希望像 png 中的图像一样旋转图像而没有任何额外的边缘。

【问题讨论】:

  • 你试过c=none了吗?见the doc

标签: video ffmpeg rotation


【解决方案1】:

默认情况下,rotate 过滤器使用黑色填充未被旋转图像覆盖的输出区域。您可以强制它不打印背景 (fillcolor=none) 或填充 alpha 分量为零的任何颜色 (fillcolor=0x00000000),例如:

ffmpeg -hide_banner -y 
  -i NoAudio.mp4 
  -i cat-face-emoji.png 
  -filter_complex "[1]rotate=a=140:fillcolor=0x00000000[ov1];[0][ov1]overlay=480:270" 
  output.mp4

【讨论】:

    【解决方案2】:

    如果图像超出屏幕,则需要在旋转图像之前在屏幕外分配一些空间。您可以使用以下代码执行此操作:

    ffmpeg -i NoAudio.mp4 -i cat-face-emoji.png -filter_complex 
    "[1]rotate=a=140:ow=rotw(140):oh=roth(140)[ov1];[0][ov1]overlay=480:270" 
    -c:a copy output.mp4 -y
    

    在此代码中,我们向旋转过滤器添加了 ow 和 oh 参数。这些参数允许我们设置旋转图像的宽度和高度。例如ow=rotw(140)命令将图像的宽度设置为图像旋转140度后的宽度。同理,oh=roth(140)命令将图片的高度设置为图片旋转140度后的高度。

    通过这些更改,图像不会超出屏幕范围,也不会出现空白

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 2013-05-18
      相关资源
      最近更新 更多