用于视频编辑的 Linux 命令行工具?

用于视频编辑的 Linux 命令行工具?

我想将两个视频合并为一个。第一个视频应覆盖整个屏幕。第二个视频应覆盖屏幕右上方较小的区域(因此与第一个视频重叠)。

理想情况下,该过程应实现自动化。例如,使用一个脚本,输入两个视频并输出一个电影文件。

有人能推荐一个可以让我做到这一点的 Linux 视频编辑工具吗?

PS:上下文是讲座录制。主屏幕将被白板或演示者桌面的录制内容覆盖,而演示者本人则显示在屏幕右上方的矩形中。

编辑
作为开发人员,我愿意熟悉 GStreamer 并编写一个满足我需求的应用程序。这是个好主意吗?

编辑2
刚刚发现这很有趣gst 启动脚本这几乎完全符合我的要求。让我试试看。

答案1

这一行代码向你展示了如何操作,只需调整尺寸以匹配你的屏幕分辨率即可。

gst-launch \
    v4l2src device=/dev/video1 \
        ! video/x-raw-yuv,width=352,height=288,framerate=\(fraction\)30/1 \
        ! videoscale \
        ! video/x-raw-yuv,width=640,height=480 \
        ! cairotextoverlay text=1 shaded-background=true deltax=310 deltay=-430 \
        ! videobox left=0  top=0  border-alpha=0 \
        ! videomixer name=mix \
        ! xvimagesink \
    v4l2src device=/dev/video0 \
        ! video/x-raw-yuv,width=640,height=480,framerate=\(fraction\)30/1 \
        ! videoscale \
        ! video/x-raw-yuv,width=1280,height=960 \
        ! cairotextoverlay text=2 shaded-background=true deltax=630 deltay=-910 \
        ! videobox left=0 top=0 border-alpha=0 \
    ! mix.

答案2

我问了类似的问题71694。我最终编写了一个 Python 脚本来执行我想要的操作。这比预期的要容易,我最终得到了一个完全自动化的解决方案,尽管显然需要编程技能。

这是我的工作流程;

  1. 使用以下方式将输入视频导出为图像序列ffmpeg
  2. 定义一个配置文件,确定输出中视频的位置、帧速率、开始和停止时间等。
  3. 该 Python 脚本使用Python 图像库(PIL)并将它们写出为新的图像序列
  4. 使用 ffmpeg 将输出重新组合成视频

如果您想走这条路,我很乐意分享更多细节和代码。否则,我也用过卡姆塔西亚(不是 Linux,所以可能对你没用)来制作一些基本的画中画内容(他们有这里有很好的教程

答案3

有趣的问题。我没有现成的解决方案,但有几个线索和替代方法。

线索

  • 这一页他们使用了 imagemagick 工具包和一些 bash 脚本(网站上有脚本)。他们需要做一些比你所需更复杂的事情,但我想技术是一样的。
  • FFmpeg 还有各种可用的插件。这个水印插件在主视频上使用动画 GIF。同样...不同的任务,但我认为代码对于您而言是高度可重复利用的。

其他方法

希望这能帮助您找到解决问题的方法。祝您好运!

答案4

你看过了吗数字视频切换器? 这是 Debian 项目用于录制会议的工具。

它与您所要求的略有不同,因为它会实时混合两个视频流,用于流式传输和录制。缺点是您会丢失完整质量的原始视频,但优点是,您不需要太多磁盘存储空间,因为只需存储混合输出即可。

它也是一个 GUI 应用程序,可以实时查看叠加/混合视频。

相关内容