You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac使用MoviePy调整视频剪辑尺寸触发SIGKILL问题

解决MoviePy调整视频尺寸触发SIGKILL(退出码137)的问题

退出码137通常意味着系统因内存不足强制终止了进程。MoviePy默认会将视频帧加载到内存中处理,对于较长的剪辑或高分辨率视频,在内存有限的M1 Mac上容易触发这个问题;而你直接用FFmpeg能正常运行,是因为FFmpeg采用流式处理,不会把整个视频加载到内存。

以下是具体解决方法:

1. 减少内存占用优化

  • 如果你不需要处理音频,加载视频时禁用音频:
with moviepy.editor.VideoFileClip(abs_path, audio=False) as video:
    subclip = video.subclip(args.start, args.end)
    # 保持原比例缩放(原视频1280x720是16:9,缩到640宽的话高度为360,避免强制拉伸)
    resized_clip = subclip.resize(width=640)
    resized_clip.write_videofile("output.mp4", codec="libx264", audio_codec="aac")
  • 确保subclip只截取必要片段,减少加载的帧数量,避免不必要的内存消耗。

2. 让MoviePy调用FFmpeg流式处理

通过write_videofile的ffmpeg_params直接传递FFmpeg缩放参数,复用你验证过的流式处理逻辑,避免MoviePy加载全量帧到内存:

with moviepy.editor.VideoFileClip(abs_path) as video:
    subclip = video.subclip(args.start, args.end)
    subclip.write_videofile(
        "output.mp4",
        codec="libx264",
        audio_codec="aac",
        ffmpeg_params=["-vf", "scale=iw*0.5:ih*0.5"]
    )

3. 升级MoviePy版本

MoviePy 1.0.3是较旧版本,后续版本针对内存管理和M1架构做了优化,建议升级到最新稳定版:

pip install --upgrade moviepy

4. 临时调整系统虚拟内存(Swap)

若上述方法仍无法缓解,可临时增加M1 Mac的虚拟内存:

  • 打开终端执行以下命令查看当前swap状态:
sudo sysctl -w vm.swapusage
  • 通过系统设置或第三方工具调整swap大小,这是临时方案,长期建议优先优化代码逻辑。

内容的提问来源于stack exchange,提问作者ThoughtfulHacking

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:11:06