Moviepy write_videofile无法写入AWS Lambda /tmp/目录问题
问题原因与解决方案
核心原因
处理视频时,MoviePy的write_videofile方法会先生成临时音频文件用于后续封装,但默认会将这个临时文件存放在当前工作目录(AWS Lambda中该目录为只读状态,比如/var/task),而非你指定的/tmp目录。而音频处理的write_audiofile流程无需生成额外临时文件,直接写入目标路径,因此能正常执行。
解决方法
以下三种方法任选其一即可:
方法1:全局设置临时目录环境变量
在代码开头添加环境变量配置,强制所有临时文件写入/tmp:
import os os.environ["TEMP"] = "/tmp" os.environ["TMP"] = "/tmp" os.environ["TMPDIR"] = "/tmp"
方法2:显式指定临时音频文件路径
调用write_videofile时,通过temp_audiofile参数指定临时音频文件的/tmp路径:
import uuid # 生成唯一临时音频文件名 temp_audio_file = f'/tmp/{uuid.uuid4().hex}_temp_audio.mp3' clip.write_videofile(self.clip_path, temp_audiofile=temp_audio_file)
方法3:初始化VideoFileClip时指定音频临时路径(部分MoviePy版本支持)
如果你的MoviePy版本支持,可以在初始化视频剪辑时直接指定音频临时文件的存储路径:
clip = VideoFileClip(self.local_file_name, audio_tempfile_path='/tmp').subclip(offset_start, offset_end)
内容的提问来源于stack exchange,提问作者kaysuez
相关产品推荐
相关产品推荐

