Добавление водяного знака к видео

Я могу использовать библиотеку moviepy, чтобы добавить водяной знак в раздел видео. Однако, когда я делаю это, он берет сегмент с водяными знаками и создает новый файл с ним. Я пытаюсь выяснить, возможно ли просто вставить отредактированную часть обратно в исходное видео, так как moviepy ЧРЕЗВЫЧАЙНО медленно записывает на диск, поэтому чем меньше сегмент, тем лучше.

Я думал, может быть, используя шутил?

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 ответ

Решение

Что медленно в вашем случае использования, так это то, что Moviepy нужно декодировать и перекодировать каждый кадр фильма. Если вам нужна скорость, я думаю, что есть способы попросить FFMPEG скопировать видеофрагменты без перекодирования.

Таким образом, вы можете использовать ffmpeg, чтобы разрезать видео на 3 субклипа (до.mp4/ фрагмент.mp4/ после.mp4), обработать только фрагмент.mp4, а затем повторно объединить все клипы вместе с ffmpeg.

Разрезание на 3 клипа с помощью ffmpeg можно выполнить из moviepy:

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

Однако для объединения всего вместе вам может понадобиться вызвать ffmpeg напрямую.

Другие вопросы по тегам