[英]How to add transitions between clips in moviepy?
這是我當前的代碼:
from moviepy.editor import *
clips = [VideoFileClip('a.mp4'), VideoFileClip('b.mp4'), VideoFileClip('c.mp4')]
transitioned_clips = [demo_clip.crossfadein(2) for demo_clip in clips]
for_delivery = concatenate_videoclips(transitioned_clips)
for_delivery.write_videofile(target_path, fps=clip.fps, bitrate='%dK' % (bitrate), threads=50, verbose=False, logger=None, preset='ultrafast')
我也嘗試使用CompositeVideoClip
,但是:
它導致了一個完全黑色的視頻。
即使對於全黑視頻,寫入視頻文件的時間也比沒有過渡的視頻文件長 50 倍。
我當前的 output 是一個將 3 個視頻連接在一起的視頻(這很好),但剪輯之間沒有過渡(這不好)。
我的目標是在剪輯之間添加crossfadein
過渡 2 秒,並將剪輯連接成一個視頻和 output。
換句話說,我希望它像(從左到右的順序):
| | + | | + | |
| clip 1 | transition 1 | clip 2 | transition 2 | clip 3 |
| | + | | + | |
反正有過渡嗎? 任何幫助表示贊賞。
您可以嘗試這種手動設置開始時間來處理轉換的方法。
padding = 2
video_clips = [VideoFileClip('a.mp4'), VideoFileClip('b.mp4'), VideoFileClip('c.mp4')]
video_fx_list = [video_clips[0]]
idx = video_clips[0].duration - padding
for video in video_clips[1:]:
video_fx_list.append(video.set_start(idx).crossfadein(padding))
idx += video.duration - padding
final_video = CompositeVideoClip(video_fx_list)
final_video.write_videofile(target_path, fps=clip.fps) # add any remaining params
編輯:
這是使用concatenate
的嘗試:
custom_padding = 2
final_video = concatenate(
[
clip1,
clip2.crossfadein(custom_padding),
clip3.crossfadein(custom_padding)
],
padding=-custom_padding,
method="chain"
)
final_video.write_videofile(target_path, fps=clip.fps) # add any remaining params
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.