向ffmpeg视频添加边框[ffmpeg python]

向ffmpeg视频添加边框[ffmpeg python],ffmpeg,Ffmpeg,我正在制作一张圣诞卡,我需要将视频嵌入右边(边框内)的一张卡中,并在左边显示一些文本 为了简单起见,假设我有一个带孔的透明盒子。我想在那个洞里展示视频 我正在使用ffmpeg-python,如果能看到如何实现它的示例,那将是一件非常棒的事情。发布本地ffmpeg解决方案也很好,尽管我相信已经有一些这样的例子 据我所知,我需要始终从主节点(例如最大的节点)开始,并将视频放在孔内 但是,当我尝试以下方法时: import ffmpeg in_file = ffmpeg.input('video.m

我正在制作一张圣诞卡,我需要将视频嵌入右边(边框内)的一张卡中,并在左边显示一些文本

为了简单起见,假设我有一个带孔的透明盒子。我想在那个洞里展示视频

我正在使用
ffmpeg-python
,如果能看到如何实现它的示例,那将是一件非常棒的事情。发布本地ffmpeg解决方案也很好,尽管我相信已经有一些这样的例子

据我所知,我需要始终从主节点(例如最大的节点)开始,并将视频放在孔内

但是,当我尝试以下方法时:

import ffmpeg

in_file = ffmpeg.input('video.mp4')
border_box = ffmpeg.input('box.png')


(
    ffmpeg.overlay(
        border_box, in_file, x=50, y=50
    )
    .output('out.mp4')
    .run()
)
它不起作用。但反之亦然,例如,在视频中放置边框框不起作用,因为它覆盖了视频的边框

我认为需要做的事情
  • 从静态
    box.png创建无限视频
  • 覆盖,同时适当缩放两个流
  • 创建输出
  • 以下是我努力实现的目标:


    透明的原因是因为它实际上不是一个矩形。我可以在心形内放置视频等。

    您的代码应该可以工作

    使用命令行中的
    FFmpeg
    构建示例输入
    box.png
    video.mp4

    以160x120分辨率构建5秒视频:

    ffmpeg -y -r 10 -f lavfi -i mandelbrot=rate=10:size=160x120 -t 5 -c:v libx264 video.mp4
    
    video.mp4的最后一帧(分辨率160x128):

    构建分辨率为260x220的单个png图像:

    ffmpeg -y -f lavfi -i testsrc=260x220 -frames:v 1 box.png
    
    box.png
    (决议260x228):

    在Python中执行代码:

    import os
    import ffmpeg
    
    in_file = ffmpeg.input('video.mp4')
    border_box = ffmpeg.input('box.png')
    
    (
        ffmpeg.overlay(
            border_box, in_file, x=50, y=50
        )
        .output('out.mp4')
        .run()
    )
    
    out.mp4的最后一帧(分辨率260x220):


    我使用最新版本的
    ffmpeg
    (4.2)和
    ffmpeg-python
    (0.2.0)包执行了测试

    box.png
    是纯色,还是显示图像、艺术等?它是一个框架,有设计,所以是图像。我想我也可以在视频上加垫,然后覆盖图像。这似乎是正确的方法?如果你提供一个模型图像来显示你想要的结果,这将是最容易回答的。我已经做了编辑