簡體   English   中英

將 Mp3 添加到 VideoFileClip MoviePy 時沒有音頻

[英]No audio when adding Mp3 to VideoFileClip MoviePy

我正在嘗試將 mp3 音頻文件添加到我使用 MoviePy 從圖像中創建的視頻剪輯。 當腳本運行時,它會創建 mp4 文件並成功播放,但是沒有音頻。 我不太確定為什么並且似乎無法找到大量關於此的文檔。 MoviePy 對我來說很新,所以任何幫助將不勝感激 - 謝謝!

def make_video(images):
    image_clips = []
    for img in images:
        if not os.path.exists(img):
            raise FileNotFoundError(img)
        ic = ImageClip(img).set_duration(3)
        image_clips.append(ic)

    video = concatenate(image_clips, method="compose")
    video.set_audio(AudioFileClip("audio.mp3")) 
    video.write_videofile("mp4_with_audio.mp4", fps=60, codec="mpeg4")

誠然,這個問題很老,但在該問題的搜索結果中排名靠前。 我有同樣的問題,並認為解決方案可以澄清。

線路:

video.set_audio(AudioFileClip("audio.mp3")) 

實際上不會更改“視頻”對象的音軌,而是返回附加了新 AudioFileClip 的對象副本。

這意味着該方法:

video.write_videofile("mp4_with_audio.mp4", fps=60, codec="mpeg4")

不會用新的音軌寫入最終文件,因為“視頻”對象保持不變。

按照以下更改腳本為我解決了這個問題。

video_with_new_audio = video.set_audio(AudioFileClip("audio.mp3")) 
video_with_new_audio.write_videofile("mp4_with_audio.mp4", fps=60, codec="mpeg4")

另請參閱文檔

這對我有用:

clip.write_videofile(out_path, 
                     codec='libx264', 
                     audio_codec='aac', 
                     temp_audiofile='temp-audio.m4a', 
                     remove_temp=True
                     )

在這里找到: https : //github.com/Zulko/moviepy/issues/51

檢查視頻 mp4_with_audio.mp4 與VLC 媒體播放器,我也有同樣的問題與快速播放器。

我也遇到了這個問題。 我找到了解決辦法,試試

video = video.set_audio(AudioFileClip("audio.mp3"))

我正在做類似的事情,發現moviepy 1.0.1沒有使用正確的參數調用ffmpeg來組合mp4視頻的視頻和音頻。 我通過直接使用 ffmpeg 的解決方法解決了這個問題。 它使用來自 moviepy 的臨時音頻文件和視頻文件來創建最終文件。 這是一個類似的問題: 輸出視頻沒有聲音由於您使用的是 mp3,您可能需要將 ffmpeg 轉換為 aac,因此這段代碼就是這樣做的。

此鏈接幫助我使用 ffmpeg:https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg

video_with_new_audio = video.set_audio(AudioFileClip("audio.mp3")) 
video_with_new_audio.write_videofile("temp_moviepy.mp4", temp_audiofile="tempaudio.m4a",codec="libx264",remove_temp=False,audio_codec='aac')

import subprocess as sp

command = ['ffmpeg',
           '-y', #approve output file overwite
           '-i', "temp_moviepy.mp4",
           '-i', "tempaudio.m4a",
           '-c:v', 'copy',
           '-c:a', 'aac', #to convert mp3 to aac
           '-shortest', 
           "mp4_with_audio.mp4" ]

with open(ffmpeg_log, 'w') as f:
    process = sp.Popen(command, stderr=f)

用這個:

video.write_videofile("output.mp4", fps=30, audio_codec="aac", audio_bitrate="192k")

暫無
暫無

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

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