用Python进行高性能视频编辑

时间:2018-10-29 12:58:26

标签: 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")
      .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%。为什么?该如何解决?

2 个答案:

答案 0 :(得分:1)

对视频重新编码始终是一个缓慢的过程,我怀疑moviepy默认使用(甚至可以使用)高性能编码器。如果可能的话,最快的通用解决方案可能是使用FFMPEG进行整个编辑。例如,here's a quick demonstration of how to add watermarks using FFMPEG。使用这样的低级工具可能是获得高性能编辑的最佳机会,如果需要从Python执行,只需使用subprocess调用ffmpeg命令即可。

答案 1 :(得分:0)

我尝试了FFMPEG,但性能也很低,无法根据要求制作视频。

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

要提高每小时的视频播放率,我没有使用moviepy,而是使用FFMPEG-性能提高了30%,视频质量下降幅度减小了,文件大小也有所增加。