4

我可以使用moviepy库为一段视频添加水印。但是,当我这样做时,它会获取带水印的段,并用它创建一个新文件。我试图弄清楚是否可以简单地将编辑后的部分拼接回原始视频,因为moviepy写入磁盘的速度非常慢,所以片段越小越好。

我在想也许使用shutil?

video = mp.VideoFileClip("C:\\Users\\admin\\Desktop\\Test\\demovideo.mp4").subclip(10,20)

logo = (mp.ImageClip("C:\\Users\\admin\\Desktop\\Watermark\\watermarkpic.png")
          .set_duration(20)
          .resize(height=20) # if you need to resize...
          .margin(right=8, bottom=8, opacity=0) # (optional) logo-border padding
          .set_pos(("right","bottom")))

final = mp.CompositeVideoClip([video, logo])
final.write_videofile("C:\\Users\\admin\\Desktop\\output\\demovideo(watermarked).mp4", audio = True, progress_bar = False)

有没有办法将 10 秒带水印的片段复制回原始视频文件?或者是否有另一个图书馆允许我这样做?

4

1 回答 1

2

您的用例中的缓慢之处在于 Moviepy 需要对电影的每一帧进行解码和重新编码。如果你想要速度,我相信有办法让 FFMPEG 在不重新编码的情况下复制视频片段。

因此,您可以使用 ffmpeg 将视频切割成 3 个子剪辑(before.mp4/fragment.mp4/after.mp4),仅处理 fragment.mp4,然后将所有剪辑与 ffmpeg 重新连接在一起。

使用 ffmpeg 切割成 3 个剪辑可以从 moviepy 完成:

https://github.com/Zulko/moviepy/blob/master/moviepy/video/io/ffmpeg_tools.py#L27

但是,要将所有内容连接在一起,您可能需要直接调用 ffmpeg。

于 2018-04-27T11:56:28.560 回答