本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

static-ffmpeg 是一个多架构 Docker 镜像,包含构建为强化静态 PIE 二进制文件的 ffmpeg 和 ffprobe,无外部依赖,可与任何基础镜像一起使用。
可使用 Docker Hub 上的 mwader/static-ffmpeg 镜像,或自行构建:
docker pull mwader/static-ffmpeg:7.1.1
COPY --from=mwader/static-ffmpeg:7.1.1 /ffmpeg /usr/local/bin/ COPY --from=mwader/static-ffmpeg:7.1.1 /ffprobe /usr/local/bin/
# 使用 ffmpeg 转换文件格式 docker run -i --rm -u $UID:$GROUPS -v "$PWD:$PWD" -w "$PWD" mwader/static-ffmpeg:7.1.1 -i file.wav file.mp3 # 使用 ffprobe 分析媒体文件 docker run -i --rm -u $UID:$GROUPS -v "$PWD:$PWD" -w "$PWD" --entrypoint=/ffprobe mwader/static-ffmpeg:7.1.1 -i file.wav
alias ffmpeg='docker run -i --rm -u $UID:$GROUPS -v "$PWD:$PWD" -w "$PWD" mwader/static-ffmpeg:7.1.1' alias ffprobe='docker run -i --rm -u $UID:$GROUPS -v "$PWD:$PWD" -w "$PWD" --entrypoint=/ffprobe mwader/static-ffmpeg:7.1.1'
/ffmpeg - ffmpeg 二进制文件/ffprobe - ffprobe 二进制文件/doc - 文档/versions.json - 包含 ffmpeg 和库构建版本的 JSON 文件/etc/ssl/cert.pem - CA 证书,用于直接运行镜像时的 -tls_verify 1 -ca_file /etc/ssl/cert.pem/etc/fonts/usr/share/fonts/usr/share/consolefonts/var/cache/fontconfiglatest - 最新的主分支构建MAJOR.MINOR.PATCH[-BUILD] - 特定版本的 FFmpeg,其中 -BUILD 表示该版本的附加构建,用于添加或修复功能二进制文件启用了多种强化特性,但即使在容器内使用,仍建议以非 root 用户身份运行,特别是处理不受信任的输入文件时。
由于许可证问题,默认情况下 Docker 镜像不包含 libfdk-aac。可通过向构建参数 ENABLE_FDKAAC 传递非空值来构建包含 libfdk-aac 的 Docker 镜像,示例如下:
docker build --build-arg ENABLE_FDKAAC=1 . -t my-ffmpeg-static:latest
镜像预装了一些基本字体 (font-terminus font-inconsolata font-dejavu font-awesome),可直接运行镜像时使用。如果将二进制文件复制到其他镜像中,则需要自行安装字体。具体方法因发行版而异,通常需要查找字体包以及如何让 fontconfig 识别它们:
假设要构建一个需要 ffmpeg 和 ffprobe 二进制文件的应用 Docker 镜像,并希望有一个专用目录存储字体,例如 /app/fonts。可按以下步骤操作:
50-custom.conf 添加到 /etc/fonts/conf.d 目录,包含供 Fontconfig 使用的附加 /app/fonts 目录:COPY <<EOF /etc/fonts/conf.d/50-custom.conf <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <dir>/app/fonts</dir> </fontconfig> EOF
ffmpeg(和 ffprobe)二进制文件:COPY --from=mwader/static-ffmpeg:7.1.1 /ffmpeg /usr/bin/ COPY --from=mwader/static-ffmpeg:7.1.1 /ffprobe /usr/bin/
/app/fonts 目录:WORKDIR /app RUN <<EOT bash set -ex mkdir -p ./fonts EOT
完整示例:
FROM python:3.11-slim-bookworm AS base COPY <<EOF /etc/fonts/conf.d/50-custom.conf <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <dir>/app/fonts</dir> </fontconfig> EOF FROM base as ffmpeg COPY --from=mwader/static-ffmpeg:7.1.1 /ffmpeg /usr/bin/ COPY --from=mwader/static-ffmpeg:7.1.1 /ffprobe /usr/bin/ FROM ffmpeg AS app WORKDIR /app RUN <<EOT bash set -ex mkdir -p ./fonts EOT
构建并运行容器,将卷挂载到 /app/fonts:
docker build -t ffmpeg-fonts-image . docker run -i --rm \ -u "$UID:$GROUPS" \ -v "$PWD:$PWD" \ -v "$PWD/fonts:/app/fonts" \ -v "$PWD/cache:/var/cache/fontconfig" \ -w "$PWD" \ ffmpeg-fonts-image \ ffmpeg -v debug -y -f lavfi -i 'color=white,drawtext=text=Test:fontfile=Arial' -t 1s /app/output.mp4
二进制文件内置 TLS 支持,但默认情况下 ffmpeg 当前不进行证书验证。要启用验证,需要使用 -tls_verify 1 和 -ca_file /path/to/cert.pem 运行 ffmpeg:
/etc/ssl/cert.pemca-certificates 包后,证书路径为 /etc/ssl/certs/ca-certificates.crt从版本 5.0.1-3 开始,Docker Hub 镜像为多架构镜像,支持 amd64 和 arm64。
将 ffmpeg 和 ffprobe 复制到当前目录:
docker run --rm -v "$PWD:/out" $(echo -e 'FROM alpine\nCOPY --from=mwader/static-ffmpeg:7.1 /ff* /\nENTRYPOINT cp /ff* /out' | docker build -q -)
docker run --rm mwader/static-ffmpeg -v quiet -f data -i versions.json -map 0 -c copy -f data -
可能会遇到 "Name does not resolve" 错误,这可能是因为主机名解析为过多 IP 地址,无法放入 DNS UDP 数据包(通常为 512 字节),导致响应被截断。通常客户端应切换到 TCP 并重做查询。这应该只在该镜像的 6.0-1 或更早版本中出现,这些版本使用 musl libc 1.2.3 或更早版本。
可能会看到 "[tls @ 0x7f80c8ec3800] error:030000A9:digital envelope routines::unknown option" 错误。这可能是因为 static-ffmpeg 二进制文件中静态链接的 openssl 版本与文件系统中的(可能是发行版修改的 openssl)配置文件不兼容。该错误是关于 openssl 遇到未知选项。
可能的解决方法:
config_diagnostics = 0 以忽略未知选项,但有忽略实际问题的风险-reconnect_on_network_error true 忽略错误,但仍会警告版本信息可在 Dockerfile 中查看。通常,master 分支应该包含最新稳定版本的 ffmpeg 和相关库。版本通过 bump 自动保持最新。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429