音频导出失败,可能是因为您指定的比特率是>视频编解码器的两个高或太低

时间:2016-03-04 01:21:40

标签: python ffmpeg moviepy

尝试使用带有moviepy库的write_videofile将m4a(aac)音频文件写入视频时,我偶尔会收到以下错误。我无法隔离导致此错误的确切原因,因为它很少发生。我已经尝试指定不同的音频比特率,但它仍然引发异常。

video = video.set_audio(AudioFileClip("asdf.m4a"))
video.write_videofile("video.mp4", fps=FPS, codec='libx264', audio_codec="aac", temp_audiofile='temp-audio.m4a', remove_temp=True, audio_bitrate="256k")
  

[Errno 32]断管MoviePy错误:FFMPEG遇到了   写入文件temp-audio.m4a时出现以下错误:

     

temp-audio.m4a:权限被拒绝

     

音频导出失败,可能是因为您指定的比特率   两个高或太低的视频编解码器:IOError Traceback(大多数   最近的电话):

     

video.write_videofile(" video.mp4&#34 ;,   fps = FPS,编解码器=' libx264',audio_codec =" aac",   temp_audiofile =' temp-audio.m4a',remove_temp = True,   audio_bitrate =" 256k")

     

文件"",第2行,在write_videofile文件中   " /var/task/moviepy/decorators.py",第54行,在requires_duration中   返回f(剪辑,* a,** k)

     

文件"",第2行,在write_videofile文件中   " /var/task/moviepy/decorators.py" ;,第137行,in   use_clip_fps_by_default返回f(剪辑,* new_a,** new_kw)文件   "",第2行,在write_videofile文件中   " /var/task/moviepy/decorators.py",第22行,在convert_masks_to_RGB中   返回f(剪辑,* a,** k)

     

File" /var/task/moviepy/video/VideoClip.py" ;,第331行,在   write_videofile verbose = verbose)文件"",第2行,   在write_audiofile File" /var/task/moviepy/decorators.py" ;,第54行,   in requires_duration返回f(剪辑,* a,** k)文件   " /var/task/moviepy/audio/AudioClip.py" ;,第204行,在write_audiofile中   verbose = verbose,ffmpeg_params = ffmpeg_params)文件   "",第2行,在ffmpeg_audiowrite文件中   " /var/task/moviepy/decorators.py",第54行,在requires_duration中   返回f(剪辑,* a,** k)文件   " /var/task/moviepy/audio/io/ffmpeg_audiowriter.py" ;,第162行,在   ffmpeg_audiowrite writer.write_frames(chunk)文件   " /var/task/moviepy/audio/io/ffmpeg_audiowriter.py" ;,第122行,在   write_frames引发IOError(错误)

     

IOError:[Errno 32]断管MoviePy错误:FFMPEG遇到了   写入文件时出现以下错误:temp-audio.m4a:temp-audio.m4a:   权限被拒绝音频导出失败,可能是因为   您指定的比特率是视频编解码器的两个高或太低。

2 个答案:

答案 0 :(得分:0)

问题是我在AWS Lambda实例上运行此脚本。我的所有文件都应该按照AWS Lambda文档的说明写入/tmp。将所有临时文件写入指定目录后; FFMpeg不再引发异常。

答案 1 :(得分:0)

举个例子,这看起来像:

vid_path = "/tmp/outputvideofile.mp4"
audio_path = "/tmp/myaudiofile.mp3"
finalclip.write_videofile(vid_path,fps=15, temp_audiofile=audio_path, remove_temp=True)