尝试使用带有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: 权限被拒绝音频导出失败,可能是因为 您指定的比特率是视频编解码器的两个高或太低。
答案 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)