FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的完整解决方案。FFmpeg 包含了领先的音视频编解码库libavcodec,可以用于各种视频格式的转换。
应用场景包括:
- 视频转换:把视频从一种格式转换成另一种格式。
- 视频压缩:减少视频文件的存储大小。
- 视频拼接:将多个视频文件合并为一个。
- 实时流处理:用于直播流的捕获和编码。
- 视频抓取:从视频文件中提取音频或者图片。
- 批量处理视频文件:自动化处理大量的视频文件。
使用 Docker CLI 搭建 FFmpeg
步骤 1: 拉取 FFmpeg Docker 镜像
bash
docker pull jrottenberg/ffmpeg
步骤 2: 使用 Docker 运行 FFmpeg 容器
bash
docker run -it --rm -v $(pwd):/tmp/workdir jrottenberg/ffmpeg -i input.mp4 output.avi
参数解释:
-it
: 交互式运行容器,并分配一个伪终端。--rm
: 容器退出时自动清理容器文件系统。-v $(pwd):/tmp/workdir
: 将当前目录挂载到容器的/tmp/workdir
,以便于容器访问宿主机的文件。jrottenberg/ffmpeg
: 使用的 FFmpeg Docker 镜像名称。-i input.mp4
: 指定输入文件。output.avi
: 指定输出文件。
使用 Docker Compose 搭建 FFmpeg
创建一个名为 docker-compose.yml
的文件,并填入以下内容:
yaml
version: '3'
services:
ffmpeg:
image: jrottenberg/ffmpeg
volumes:
- .:/tmp/workdir
command: ffmpeg -i input.mp4 output.avi
stdin_open: true
tty: true
参数解释:
version
: 指定使用的 Docker Compose API 版本。services
: 定义了要运行的服务列表。ffmpeg
: 服务的名字。image
: 指定使用的 Docker 镜像。volumes
: 映射宿主机当前目录到容器的/tmp/workdir
。command
: 容器启动后执行的命令,这里是运行 FFmpeg 进行视频转换。stdin_open
(对应-i
): 保持 STDIN 打开即使没有附加。tty
(对应-t
): 分配一个伪 TTY,等同于 Docker CLI 的-t
。
步骤 3: 使用 Docker Compose 运行服务
bash
docker-compose up
当需要停止并移除容器和网络时,可以使用:
bash
docker-compose down
以上命令将会启动 FFmpeg 服务,并执行定义在 command
中的 FFmpeg 命令。通过挂载当前目录,可以轻松地处理宿主机中的视频文件。