MoviePy视频压缩异常:EC2 Ubuntu环境下视频几秒后卡顿
解决MoviePy在pip虚拟环境中视频压缩卡顿/无正常视频的问题
针对你遇到的本地conda环境正常、EC2 Ubuntu pip虚拟环境中视频压缩后仅音频完整、视频几秒卡顿的问题,分享几个排查和解决方向:
1. 确认虚拟环境中FFmpeg的版本与调用路径
软链接指向的系统FFmpeg版本很可能和本地的4.3.1存在差异,参数兼容性是核心问题:
- 在虚拟环境中执行
ffmpeg -version,确认版本是否为4.3.1; - 在代码中添加打印,查看MoviePy实际调用的FFmpeg路径:
import moviepy.editor as mp print(mp.ffmpeg_tools.ffmpeg_path) - 如果版本不符,建议在虚拟环境中单独编译安装FFmpeg 4.3.1,或者通过apt安装对应兼容版本,确保MoviePy调用的是匹配版本的FFmpeg。
2. 调整FFmpeg参数与线程设置
本地兼容的参数在不同FFmpeg版本中可能失效,同时单线程编码可能因EC2资源不足出错:
- 先简化
ffmpeg_params,比如只保留基础参数测试:
正常生成后再逐步添加clip_resized.write_videofile(output_path, codec="libx264", ffmpeg_params=['-pix_fmt', 'yuv420p', '-acodec', 'aac'])-profile:v、-level等参数; - 去掉
threads=1参数(让MoviePy自动适配线程数),或者设置为threads=4,提升编码稳定性。
3. 强制MoviePy调用指定FFmpeg
pip版MoviePy默认优先调用系统FFmpeg,软链接可能未被识别,可通过环境变量指定路径:
- 在代码开头添加环境变量配置:
import os # 替换为你安装的FFmpeg 4.3.1的实际路径 os.environ['FFMPEG_BINARY'] = '/opt/ffmpeg-4.3.1/bin/ffmpeg' - 或者激活虚拟环境后,先设置环境变量再运行脚本:
export FFMPEG_BINARY=/opt/ffmpeg-4.3.1/bin/ffmpeg && python your_script.py
4. 验证FFmpeg命令行编码是否正常
排除MoviePy的影响,直接用FFmpeg命令行测试:
ffmpeg -i input.mp4 -vf scale=640:360 -c:v libx264 -profile:v baseline -level 3.0 -pix_fmt yuv420p -c:a aac output.mp4
如果命令行生成的视频仍卡顿,说明是FFmpeg本身的配置/版本问题;如果命令行正常,则是MoviePy的调用逻辑需要调整。
5. 检查EC2资源限制
EC2实例的CPU、内存不足可能导致编码中途出错:
- 查看EC2监控面板的CPU使用率,或者编码时用
top命令观察资源占用; - 若资源不足,可临时升级实例类型,或调整编码参数降低负载(比如降低分辨率)。
内容的提问来源于stack exchange,提问作者Dmytro Razvaliaiev
相关产品推荐
相关产品推荐

