如何将视频放在另一个视频的角落?

Tom*_*ski 6 video

我录制了一个教程视频和一个来自相机的视频,我在其中解释了教程中发生的事情。我想把解说视频放在第一个视频的右下角的一个小盒子里。

我使用 Windows 7,并且更愿意在不使用任何脚本等的情况下在免费软件程序中完成它。

如何将视频放在另一个视频的角落?

小智 11

你最好的选择是一个专业的视频编辑软件,如Adobe首映,但你指定的免费软件,所以我向您喜爱的矿井:ffmpeg的avconv。(基本上,这是同一个程序。评论中的好心人可能会帮助澄清哪一个可用于 Windows 7。我使用 avconv 因为那是我的 Debian 存储库中的那个,但 ffmpeg for Windows 的下载看起来更简单。 )

我不确定命令行界面是否属于您对“脚本编写”的定义,但我真的相信这是完成任务的最佳和最简单(或许也是最快)的方式。

此外,ffmpeg/avconv 通常仅用于 trans-、en- 和解码,但它可以做更多的事情。

例子

ffmpeg 可以制作这些马赛克,将视频放在静态背景图像上叠加在另一个视频的顶部(但那个看起来像是在 C# 中)并将两个视频相互叠加(命令行)。

关于马赛克的第一个链接是来自 ffmpeg.org 的教程,因此它解释了很多正在发生的事情。

具体解决方案

ffmpeg/avconv 非常强大,但有时可能需要一段时间才能准确地弄清楚您想做什么以及如何做。我现在将尝试构建一个特定的解决方案。

假设视频是标准的 HD 1920x1080,比例为 16:9。

首先,您需要弄清楚叠加视频的大小。您可能希望直观地看到这一点,但您可以多次尝试此过程,直到满意为止。如果两个视频的大小相同,您或许可以将叠加层设为背景水平大小的四分之一。在坐标(从左上角)x=1920-480=1440 和 y=1080-270=810 处,叠加层将是 1920/4=480 宽和 (1920/4)*(9/16)=270 高。

这只是一些数学问题,因为我想让视频精确到水平尺寸的四分之一。您可以只指定覆盖的大小和位置。

使用 filter_complex ( documentation ),设置叠加位置:

-filter_complex overlay=1440:810
Run Code Online (Sandbox Code Playgroud)

并为叠加添加缩放过滤器:

-filter_complex "[1] scale=480:270 [over]; [0][over] overlay=1440:810"
Run Code Online (Sandbox Code Playgroud)

(方括号中的数字指定对哪个输入起作用。)(缩放过滤器需要在叠加过滤器之前,否则叠加视频将流到背景/输出之外并导致错误。)

构建整个命令如下:

ffmpeg -i background.movie -i overlay.movie -filter_complex "[1] scale=480:270 [over]; [0][over] overlay=1440:810" output.movie
Run Code Online (Sandbox Code Playgroud)

(“-i”表示输入;输出是唯一没有“-”选项指示符的其他参数。)

方法

  1. 安装 ffmpeg/avconv
  2. 将命令复制并粘贴到命令行界面中
  3. 更改输入和输出文件。(您可以先导航到特定文件夹,然后使用文件名运行,或者您可以在命令中指定完整路径。)(ffmpeg/avconv 会自动从输出文件扩展名中选择格式,因此只需将其更改为例如“ .mp4”。)
  4. 更改分辨率/大小。
  5. 执行命令。

测试

我已经用 avconv 用完全相同的语法测试了这个(其他分辨率为 4:3,只是因为这是默认值)并且能够改变这个

背景图片

和这个

叠加图像

进入这个

结果图像

(这些是 VLC 快照。)

感谢和参考书目


小智 -1

我过去使用过 Techsmith 的 Camtasia 试用版。根据该项目持续的时间或您需要该软件的时间,这可能是一个可行的选择。如果您只制作一个视频,试用期是免费的,这是一个非常好的编辑此类视频的程序。