给视频添加水印

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秒水印的片段复制回原始视频文件中?或者是否有另一个库可以让我这样做?

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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接