在Amazon Lambda的Docker镜像中安装FFmpeg失败求助
解决Lambda Docker镜像中FFmpeg安装失败的问题
问题根源
public.ecr.aws/lambda/python:3.8 基于Amazon Linux 2构建,默认yum仓库未包含FFmpeg包,直接执行yum install ffmpeg会提示找不到对应软件包。
解决方案:添加第三方仓库安装FFmpeg
修改Dockerfile,先添加包含FFmpeg的第三方软件源,再执行安装操作:
FROM public.ecr.aws/lambda/python:3.8 # 复制函数代码 COPY app.py ${LAMBDA_TASK_ROOT} # 安装依赖与FFmpeg COPY requirements.txt . RUN yum install -y gcc epel-release && \ yum install -y https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm && \ yum install -y ffmpeg && \ pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" && \ # 清理yum缓存以减小镜像体积 yum clean all && rm -rf /var/cache/yum # 设置函数入口 CMD [ "app.handler" ]
关键步骤说明
- 安装
epel-release:为Amazon Linux 2启用额外的开源软件源基础包 - 安装RPM Fusion Free仓库:该仓库提供FFmpeg等多媒体工具的官方编译包
- 清理yum缓存:避免无用文件占用镜像空间
替代方案:使用预编译静态二进制包
如果不想添加第三方仓库,可直接下载预编译的FFmpeg静态二进制文件,解压后放入系统路径:
FROM public.ecr.aws/lambda/python:3.8 # 复制函数代码 COPY app.py ${LAMBDA_TASK_ROOT} # 安装依赖与预编译FFmpeg COPY requirements.txt . RUN yum install -y gcc wget tar && \ wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz && \ tar xvf ffmpeg-release-amd64-static.tar.xz && \ cp ffmpeg-*-amd64-static/ffmpeg /usr/bin/ && \ cp ffmpeg-*-amd64-static/ffprobe /usr/bin/ && \ pip3 install -r requirements.txt --target "${LAMBDA_TASK_ROOT}" && \ # 清理临时文件与无用依赖 rm -rf ffmpeg-* ffmpeg-release-amd64-static.tar.xz && \ yum remove -y wget tar && yum clean all && rm -rf /var/cache/yum # 设置函数入口 CMD [ "app.handler" ]
该方案优势
- 无需依赖第三方软件源,兼容性更强
- 可选择特定版本的FFmpeg二进制包,满足定制化需求
内容的提问来源于stack exchange,提问作者Luka Savic
相关产品推荐
相关产品推荐

