簡體   English   中英

如何在 moviepy 中的剪輯之間添加轉場?

[英]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 ,但是:

  1. 它導致了一個完全黑色的視頻。

  2. 即使對於全黑視頻,寫入視頻文件的時間也比沒有過渡的視頻文件長 50 倍。

我現在的output:

我當前的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM