簡體   English   中英

如何在moviepy中循環播放mp4文件?

[英]How can I loop a mp4 file in moviepy?

我當前的代碼正在獲取一個 mp4 視頻文件,它向其中添加了一個 mp3 音樂文件,將 mp4 文件的持續時間設置為 mp3 文件的長度,將剪輯調整為 1920x1080 像素,最后保存並輸出完成視頻。

結果:完成的視頻播放 mp4 文件一次,然后凍結,直到 mp3 文件結束。

我想要的結果:我怎樣才能讓 mp4 文件循環到 mp3 文件的結尾,這樣它就不會在一次播放后凍結。


from moviepy.editor import *
import moviepy.editor as mp
import moviepy.video.fx.all as vfx


audio = AudioFileClip("PATH/TO/MP3_FILE")

clip = VideoFileClip("PATH/TO/MP4_FILE").set_duration(audio.duration)


# Set the audio of the clip
clip = clip.set_audio(audio)

#Resizing
clip_resized = clip.resize((1920, 1080)) 


#Code that doesn't work for looping
newClip = vfx.loop(clip_resized)


# Export the clip
clip_resized.write_videofile("movie_resized.mp4", fps=24)

代碼本身有效,但 mp4 直到最后才會循環。 提前致謝。

那個晚了 3 年,但它仍然是谷歌上的最佳結果。

如果您想在音頻的持續時間內循環播放,moviepy 有一個簡單的循環功能,您可以從要循環的剪輯中調用它,它需要循環次數或循環持續時間。

所以在你的情況下它會是

loopedClip = clip_resized.loop(duration = audio.duration)

或者,如果您不想創建單獨的剪輯,則

clip_resized = clip_resized.loop(duration = audio.duration)

如果您收到此錯誤:

OSError:文件中的錯誤...video.mp4,訪問時間 t=101.77-101.81 秒,剪輯持續時間=101 秒,

出現此問題是因為循環與最終循環視頻文件的音頻不匹配

因此,您必須從視頻文件(或您的自定義音頻文件)中提取音頻並將其作為視頻文件循環播放

    audio = AudioFileClip("video.mp4")#here i'm using the audio of the original video but if you have custom audio pass it here
    audio = afx.audio_loop(audio, duration=500) #you can use n=X too 
    clip1 = VideoFileClip("video.mp4")
    clip1 = vfx.loop(clip1, duration=500) #you can use n=X too 
    clip1 = clip1.set_audio(audio)
    clip1.write_videofile("movie.mp4")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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