Python中的高性能视频编辑

Python中的高性能视频编辑,python,mp4,moviepy,Python,Mp4,Moviepy,我试图在mp4视频的很短的部分添加水印。它必须非常非常快。现在我试着用moviepy来做,下面是我的代码: import moviepy.editor as mp video = mp.VideoFileClip("video.mp4") part1 = video.subclip(0,10) part2 = video.subclip(10,15) part3 = video.subclip(15,152.56) logo = (mp.ImageClip("logo.png")

我试图在mp4视频的很短的部分添加水印。它必须非常非常快。现在我试着用moviepy来做,下面是我的代码:

import moviepy.editor as mp

video = mp.VideoFileClip("video.mp4")
part1 = video.subclip(0,10)
part2 = video.subclip(10,15)
part3 = video.subclip(15,152.56)
logo = (mp.ImageClip("logo.png")
      .set_duration(part2.duration)
      .resize(height=50) # if you need to resize...
      .margin(right=8, top=8, opacity=0) # (optional) logo-border padding
      .set_pos(("right","top")))

partSubtitles = mp.CompositeVideoClip([part2, logo])
final_clip = mp.concatenate_videoclips([part1, partSubtitles, part3])
final_clip.write_videofile("my_concatenation.mp4")
添加徽标和合并视频几乎可以立即工作,但将2分钟的视频写入光盘需要1分钟,这显然太长了。你知道一种只编辑几帧并且保存得更快的方法吗


其次,转换后,新文件大约大40%。为什么?如何解决这个问题?

重新编码视频总是一个缓慢的过程,我怀疑moviepy默认使用(甚至可以使用)高性能编码器。如果可能的话,最快的通用解决方案可能是使用FFMPEG进行整个编辑。例如使用这样的低级工具可能是获得高性能编辑的最佳机会,如果您需要从Python执行它,只需使用调用ffmpeg命令。

我尝试了ffmpeg,但性能太低,无法根据请求制作视频

我们买了一台更强大、更大的服务器,现在我们一直在处理文件,以便随时为新的观察者做好准备。这不是一个完美的解决方案,但它的可扩展性更强


为了提高视频速率/h,我没有使用moviepy,而是使用FFMPEG-性能提高了30%,减少了视频质量下降/文件大小增加。

可能不会有一个通用的解决方案不涉及视频文件的重新编码,这可能就是为什么它需要如此长的时间和越来越大的原因(如果moviepy没有像视频最初使用的那样高效编码)。你能用高质量和高性能的东西做到这一点吗,比如ffmpeg?添加水印(或视频流的任何其他可见、相关和特定的更改)需要对输入进行重新编码。这不仅需要很长时间,而且会给您的流增加噪音。我认为您不会找到一个快速的解决方案。值得一提的是,moviepy本质上是一个使用(除其他外)的高级抽象下面是FFMPEG。可能仍有效率有待提高,但这并不是一个完全不同的引擎。