给视频加水印

Adding watermark to video

我可以使用 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 秒片段复制回原始视频文件?或者是否有另一个图书馆允许我这样做?

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

所以你可以使用ffmpeg将视频切割成3个子片段(之前。mp4/fragment.mp4/after.mp4),只处理fragment.mp4,然后用ffmpeg重新连接所有片段。

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

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

然而,为了将所有内容连接在一起,您可能需要直接调用 ffmpeg。