【问题标题】:Video editing with python or command line使用 python 或命令行进行视频编辑
【发布时间】:2011-06-17 00:45:56
【问题描述】:

我的python+django项目需要进行如下操作:

  • 加入相同大小和比特率的视频
  • 加入视频和图像(我将使用 PIL 进行图像处理:将文本写入现有图像)
  • 视频之间的过渡淡化

我已经知道一些用于 python 的视频编辑库:MLT framework(对我的需要来说太复杂了)、pygamepymedia(不包括我想要的所有功能)、gstreamer bindings(糟糕的文档)。

我还可以使用ffmpegmencodertranscode 从命令行完成所有工作。

在 Linux 机器上做这种事情的最佳方法是什么。

编辑:最终我选择了使用 melt(mlt 的命令行)

【问题讨论】:

    标签: python command-line fadein fadeout video-editing


    【解决方案1】:

    http://avisynth.org/mediawiki/Main_Page 是一种视频脚本语言。

    【讨论】:

    • 嗨,谢谢,但我忘了提到我在 Linux 服务器上需要它。或者,如果您指的是这个版本的 avisynth avisynth3.unite-video.com/download.html,那么它还不能使用。
    • 对不起,我从来没有想到 avisynth 只是 Windows
    【解决方案2】:

    因为 ffmpeg 在 GNU/Linux 上可用,所以我将它与 pexpectsubprocess 等模块一起使用是最好的解决方案....

    【讨论】:

    • 我现在正在使用 ffmpeg,但是添加淡入淡出、叠加图像等效果有点困难(或不可能?)。或者这一切都是可能且容易做到的?
    • 没错:用 ffmpeg 进行淡入/淡出似乎是不可能的......或者,也许这个链接会对你有所帮助:michaelminn.com/linux/mmsuper8
    【解决方案3】:

    您可以使用 OpenCV 来连接视频和图像。请参阅documentation,尤其是image/video I/O functions

    但是,我不确定该库是否具有可以为您进行淡入淡出的功能。

    【讨论】:

    • 如果它可以加入,你就不能加入一个“淡入淡出”的视频和你当前的视频吗?或者我猜连接只是硬切?
    • 是的,他们的连接非常困难。如果你想一起淡化两个视频,你必须自己实现生成淡化帧的代码。它只是一个 alpha 混合,所以它不是太难,但也不是微不足道的。
    【解决方案4】:

    您使用的是什么编解码器?

    有两种压缩视频的方法:有损和无损。很容易将它们区分开来。根据长度,有损视频文件在兆字节范围内,无损(包括未压缩)在千兆字节范围内。

    这里过于简单化了。编辑视频文件与编辑电影有很大不同,您只需将电影片段粘合在一起。这不仅仅是比特率、帧率和分辨率。大多数有损视频编解码器(MPEG 1-4、Ogg Theora、H.26x、VC-1 等)以全帧开始,然后仅记录运动的变化。当您观看视频时,您实际上看到的是一个静态场景,上面粘贴了一层又一层的变化。看起来您在全帧之后看到全帧,但如果您查看文件中的数据,您将看到的只是黑色背景和打乱的视频块。

    如果它是未压缩的或使用无损编解码器(HuffYUV、Lagarith、FFV1 等),那么您可以像编辑电影一样编辑您的视频文件。您仍然需要重新编码视频,但这不会影响视频质量,您可以随意剪切、复制和粘贴,只要分辨率和帧速率相同。如果您的视频有损,则必须重新编码,但会损失一些视频质量,就像一遍又一遍地以 JPEG 格式保存相同的图像一样。

    另一种选择可能是将几段视频放入 MKV 之类的容器中,并使用章节让它从一段跳到另一段。我似乎记得有人告诉我这是可能的,但我从未尝试过,所以也许不是。

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2013-02-19
      • 2013-04-13
      • 2011-10-21
      • 1970-01-01
      • 2013-03-20
      • 2014-05-02
      相关资源
      最近更新 更多