[英]How to combine 2 audio mp3s in moviepy?
我有一個帶有“語音”語音的 mp3 和一個帶有背景音樂“back_mus”的 mp3,我想將它們組合成一個 mp3 文件。 我嘗試運行下面的代碼,但我收到此錯誤“AttributeError: 'CompositeAudioClip' object has no attribute 'fps'”。 我怎樣才能讓它工作? 先感謝您。
speech = AudioFileClip(r"{}".format(cwd) + "/SpeechFolder/speech100.mp3")
back_music = AudioFileClip(r"{}".format(cwd) + "/back_mus.mp3")
back_music = back_music.subclip(0, int(speech.duration)) #I don't know if this line works, if it is wrong please tell me how to fix this, but you can pretty much disregard this part, I just tried to do this because the back_mus mp3 is pretty big, and I did not want to work with a 100 mb file every time, so I intended to make it the same length as the voice over mp3
final_clip = CompositeAudioClip([speech, back_music])
final_clip.write_audiofile(r"{}".format(cwd) + "/SpeechFolder/speech1000.mp3")
完整錯誤:
Traceback (most recent call last):
File "c:\Users\TheD4\OneDrive\Desktop\New folder\Body.py", line 205, in body
final_clip.write_audiofile(r"{}".format(cwd) + "/SpeechFolder/speech1000.mp3")
File "<decorator-gen-45>", line 2, in write_audiofile
File "C:\Users\TheD4\AppData\Local\Programs\Python\Python39\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "C:\Users\TheD4\AppData\Local\Programs\Python\Python39\lib\site-packages\moviepy\audio\AudioClip.py", line 192, in write_audiofile
if not self.fps:
AttributeError: 'CompositeAudioClip' object has no attribute 'fps'
看來你發現了一個錯誤。 如果不同的剪輯具有不同的 FPS,我認為復合剪輯不會自動獲得 fps。 您始終可以設置 fps,例如
newclip=clip.set_fps(25)
您還可以修改 AudioClip。 試圖追蹤問題時的骯臟黑客攻擊:在 AudioClip.py 中,更改:
if fps is None:
fps = self.fps
至
if fps is None:
fps = 44100
我面臨同樣的問題。 答案在 github 上。 這是幫助我的代碼。 enter code here
import moviepy.editor as mpy
enter code here
clip=mpy.VideoFileClip("sample.mp4")
enter code here
subclip=mpy.concatenate_videoclips([clip.subclip((1,0), enter code here
(2,0)),clip.subclip((3,0),(4,0)),clip.subclip ((5,0),(6,0))])
enter code here
aud = subclip.audio.set_fps(44100) enter code here
subclip = subclip.without_audio().set_audio(aud) enter code here
subclip.preview()
speech = AudioFileClip(r"{}".format(cwd) +"/SpeechFolder/speech100.mp3")
back_music = AudioFileClip(r"{}".format(cwd) + "/back_mus.mp3")
back_music = back_music.subclip(0, int(speech.duration))
final_clip = CompositeAudioClip([speech, back_music])
final_clip.write_audiofile(r"{}".format(cwd) +"/SpeechFolder/speech1000.mp3", fps = 16000)
您可以使用fps參數調用write_audiofile
我也遇到了這個錯誤,我的解決方案很粗糙,但是可以。
CompositeAudioClip class 不初始化 fps 屬性。 我有一些想法可以解釋這種特殊性,但我不確定。
一個可能的競爭者:如果合成不同 fps 值的音頻剪輯,該程序曾經依賴於另一種標准化值的方法。
修復一目了然:我打開moviepy程序文件,找到CompositeAudioClip class,並添加標准fps屬性。
方法
在您機器上下載的 moviepy 文件夾中找到“Audioclip.py”文件。 文件路徑通常在語法錯誤中給出。 如果您使用 Pycharm 和 windows,它看起來類似於:
C:\Users\Your_name\PycharmProjects\Your_Project\venv\Lib\site-packages\lib\site-packages\moviepy\audio\AudioClip.py"
打開文件,找到 CompositeAudioClip Class。 (第 265 行):
然后初始化一個fps值。 我選擇了 48100hz,因為這是視頻音頻的標准。
現在運行你的代碼!
這對我有用,我希望你覺得它有用。
但是,這段代碼有問題。 使用預設 fps 是對每個音頻文件的全面處理,忽略需要更合適 fps 設置的細微差別。 如果您要合成的 fps 音頻文件明顯更高或更低,請手動將代碼中的 fps 編輯為所需的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.