输出的视频没有声音

时间:2019-02-16 11:55:59

标签: python python-3.x audio video moviepy

当我在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"

2 个答案:

答案 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)