Добавление водяного знака к видео - PullRequest
0 голосов
/ 26 апреля 2018

Я могу использовать библиотеку 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 Ответ

0 голосов
/ 27 апреля 2018

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

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

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

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

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

...