Как добавить сразу несколько водяных знаков в видео через MoviePy

Мой код:

from moviepy.editor import *
import moviepy.editor as mp

dur = video.duration
video = mp.VideoFileClip('vid.MP4')
logo = (mp.VideoFileClip("logo3.gif", has_mask=True)
    .loop()
    .set_start(1)
    .set_duration(dur/2-2)
    .margin(right=8, top=8, opacity=0)
    .set_pos(("left","top")))

logo2 = (mp.VideoFileClip("logo3.gif", has_mask=True)
    .loop()
    .set_start(dur/2)
    .set_duration(dur/2-4)
    .margin(right=8, top=8, opacity=0)
    .set_pos(("right","bottom")))

final = mp.CompositeVideoClip([video, logo])
final.write_videofile("small_logo.mp4")

Как добавить к видео два (и более) разных водяных знака без сохранения на диск? Пробовал несколько способов с clips_array и т. Д.


Ответы (1 шт):

Автор решения: CrazyElf

Если я правильно понял документацию:

use_bgclip

  Set to True if the first clip in the list should be used as the
  'background' on which all other clips are blitted. That first clip must
  have the same size as the final clip. If it has no transparency, the final
  clip will have no mask.

Краткий перевод:

Установите use_bgclip в True, если первый клип в списке должен быть использован как "фон" для остальных клипов.

Нужно сделать так:

final = mp.CompositeVideoClip([video, logo, logo2], use_bgclip=True)

В вашем коде непонятно откуда берётся clip1, наверное вы имели в виду video, поэтому я заменил на него.

→ Ссылка