我可以使用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秒水印片段复制回原始视频文件?或者是否有另一个允许我这样做的图书馆?
答案 0 :(得分: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。