最近找了个视频教程,下载过程中我发现这些视频的体积相当大,短短十分钟的一个小节就将近1G,整体还是非常占磁盘的。那是不是可以对视频进行压缩下呢?
压缩视频很容易想到ffmpeg
就可以很容易搞定,视频是存放在家里的群晖上面的,但是不想在群晖上安装太多工具,于是想到了,是不是可以通过在Docker
里添加ffmpeg
来搞定?
一、思路
- Docker内安装ffmpeg;
- 把本地原始视频、输出视频、压缩脚本挂载到Docker;
- 启动临时容器进行压缩(执行完成释放容器);
二、步骤
- 创建一个脚本文件
compress_videos.sh
#!/bin/sh
INPUT_DIR="/usr/local/videos"
OUTPUT_DIR="/usr/local/compressed_videos"
mkdir -p "$OUTPUT_DIR"
find "$INPUT_DIR" -type f -name "*.mp4" -exec sh -c 'ffmpeg -i "$1" -c:v libx264 -crf 23 -c:a aac -strict experimental "$2/$(basename "$1")"' sh {} "$OUTPUT_DIR" \;
- 创建
Dockerfile
FROM alpine:latest
RUN apk add --no-cache ffmpeg
WORKDIR /usr/local/script
COPY compress_videos.sh .
RUN chmod +x compress_videos.sh
CMD ["./compress_videos.sh"]
- 构建Docker镜像
docker build -t ffmpeg-compression:latest .
- 运行 Docker 容器
docker run --rm \
-v "/var/services/homes/kevin/learn/video":/usr/local/videos \
-v "/var/services/homes/kevin/learn/video_compressed":/usr/local/compressed_videos \
ffmpeg-compression:latest
执行之后,CPU拉满了,由于群晖是J4125CPU,性能较差,13个小时之后,所有视频完成了压缩,由原来的67G压缩到了10G。
原创文章,作者:Kevin,如若转载,请注明出处:https://zwenkai.com/compress_video_using_ffmpeg_in_docker/