当我在Moviepy中连接视频时,输出文件中没有声音,我尝试使用各种参数但没有任何线索。
这是我的代码:
import moviepy.editor as mp
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
clip1 = mp.VideoFileClip("V1.mp4")
clip2 = mp.VideoFileClip(dir_path+"\\V2.mp4")
clip3 = mp.VideoFileClip(dir_path+"\\V3.mp4")
output_movie = 'new_movie1.mp4'
final_clip = mp.concatenate_videoclips([clip1,clip2,clip3])
final_clip.write_videofile(output_movie, remove_temp=False, bitrate="5000k",audio=True, audio_codec="aac",codec='mpeg4')
我尝试了codec="libx264"
答案 0 :(得分:0)
我通过添加一个临时音频文件路径解决了这个问题。只需将您的最后一行代码更改为此:
final_clip.write_videofile(output_movie, temp_audiofile='temp-audio.m4a', remove_temp=True, codec="libx264", audio_codec="aac")
您正在指定MoviePy可以在哪里存储其临时音频文件。另外,将参数remove_temp
更改为True
,以便临时文件将自动清除。
答案 1 :(得分:0)
我通过直接使用ffmpeg的解决方法解决了这个问题。它使用来自moviepy的临时音频文件和视频文件来创建最终文件。我发现moviepy 1.0.1不会使用正确的参数调用ffmpeg来组合mp4视频的视频和音频。该链接帮助我使用ffmpeg:https://superuser.com/questions/277642/how-to-merge-audio-and-video-file-in-ffmpeg
final_clip.write_videofile(moviepy_outfile, temp_audiofile=temp_audiofile,codec="libx264",remove_temp=False,audio_codec='aac')
import subprocess as sp
command = ['ffmpeg',
'-y', #approve output file overwite
'-i', str(moviepy_outfile),
'-i', str(temp_audiofile),
'-c:v', 'copy',
'-c:a', 'copy',
'-shortest',
str(output_movie) ]
with open(ffmpeg_log, 'w') as f:
process = sp.Popen(command, stderr=f)