搬瓦工 FFmpeg 视频转码处理完整教程
FFmpeg 是最强大的开源多媒体处理工具,几乎支持所有的音视频格式和编解码器。在搬瓦工 VPS 上安装 FFmpeg 后,你可以进行视频转码、格式转换、分辨率调整、字幕嵌入、视频裁剪拼接等各种操作。本文将全面介绍 FFmpeg 的安装方法和常用命令。
一、安装 FFmpeg
1.1 通过包管理器安装
# Ubuntu/Debian
apt update
apt install ffmpeg -y
# 验证安装
ffmpeg -version
1.2 通过 Docker 使用
如果需要最新版本的 FFmpeg,可以使用 Docker 镜像:
# 使用 FFmpeg Docker 镜像
docker run --rm -v $(pwd):/work -w /work linuxserver/ffmpeg \
-i input.mp4 -c:v libx264 output.mp4
1.3 安装静态编译版
也可以直接下载预编译的静态版本:
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar xf ffmpeg-release-amd64-static.tar.xz
cp ffmpeg-*-static/ffmpeg /usr/local/bin/
cp ffmpeg-*-static/ffprobe /usr/local/bin/
二、查看媒体信息
# 查看视频详细信息
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
# 简洁显示
ffprobe -v error -show_entries format=duration,size,bit_rate \
-show_entries stream=codec_name,width,height,bit_rate input.mp4
三、格式转换
3.1 基本格式转换
# MKV 转 MP4(不重新编码,速度极快)
ffmpeg -i input.mkv -c copy output.mp4
# AVI 转 MP4(重新编码)
ffmpeg -i input.avi -c:v libx264 -c:a aac output.mp4
# 视频转 GIF
ffmpeg -i input.mp4 -vf "fps=10,scale=480:-1" -loop 0 output.gif
# 提取音频
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3
3.2 H.265/HEVC 编码
# H.264 转 H.265(压缩率更高)
ffmpeg -i input.mp4 -c:v libx265 -crf 28 -c:a copy output_h265.mp4
# 指定编码预设
ffmpeg -i input.mp4 -c:v libx265 -preset medium -crf 26 -c:a aac output.mp4
四、分辨率和码率调整
4.1 调整分辨率
# 缩放到 720p(保持比例)
ffmpeg -i input.mp4 -vf "scale=-1:720" -c:v libx264 -c:a copy output_720p.mp4
# 缩放到指定宽度(保持比例)
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -c:a copy output.mp4
# 缩放到 1080p
ffmpeg -i input.mp4 -vf "scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2" \
-c:v libx264 -c:a copy output_1080p.mp4
4.2 控制码率
# 使用 CRF 模式(推荐,数值越小质量越高)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a copy output.mp4
# 使用固定码率
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -c:a aac -b:a 128k output.mp4
# 两遍编码(更精确的码率控制)
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 1 -f null /dev/null
ffmpeg -i input.mp4 -c:v libx264 -b:v 2M -pass 2 -c:a aac output.mp4
五、视频裁剪与拼接
5.1 截取视频片段
# 从 00:01:30 开始截取 60 秒
ffmpeg -i input.mp4 -ss 00:01:30 -t 60 -c copy output_clip.mp4
# 从 00:01:30 截取到 00:03:00
ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:00 -c copy output_clip.mp4
5.2 拼接多个视频
# 创建文件列表
cat > filelist.txt <<EOF
file 'part1.mp4'
file 'part2.mp4'
file 'part3.mp4'
EOF
# 拼接(同格式直接合并)
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output_merged.mp4
5.3 裁剪画面区域
# 裁剪视频画面(从左上角 100,50 开始,裁剪 640x480 的区域)
ffmpeg -i input.mp4 -vf "crop=640:480:100:50" -c:a copy output_cropped.mp4
六、字幕处理
6.1 嵌入字幕(硬字幕)
# 嵌入 SRT 字幕
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt" output_subtitled.mp4
# 指定字幕样式
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt:force_style='FontSize=24,FontName=Noto Sans CJK SC'" \
output_subtitled.mp4
6.2 封装字幕(软字幕)
# 将字幕封装到 MKV 容器
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s srt output.mkv
# 添加多语言字幕
ffmpeg -i input.mp4 -i cn.srt -i en.srt \
-map 0 -map 1 -map 2 \
-c copy -c:s srt \
-metadata:s:s:0 language=chi -metadata:s:s:1 language=eng \
output.mkv
6.3 提取字幕
ffmpeg -i input.mkv -map 0:s:0 output_subtitle.srt
七、音频处理
# 调整音量
ffmpeg -i input.mp4 -af "volume=1.5" -c:v copy output.mp4
# 替换音频轨道
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac \
-map 0:v:0 -map 1:a:0 output.mp4
# 音频格式转换
ffmpeg -i input.flac -c:a libmp3lame -b:a 320k output.mp3
ffmpeg -i input.mp3 -c:a libopus -b:a 128k output.opus
八、批量处理脚本
# 批量转换目录下所有 MKV 为 MP4
for f in *.mkv; do
ffmpeg -i "$f" -c:v libx264 -crf 23 -c:a aac "${f%.mkv}.mp4"
done
# 批量生成缩略图
for f in *.mp4; do
ffmpeg -i "$f" -ss 00:00:05 -vframes 1 "${f%.mp4}_thumb.jpg"
done
# 批量压缩视频
for f in *.mp4; do
ffmpeg -i "$f" -c:v libx264 -crf 28 -preset fast -c:a aac \
"compressed_${f}"
done
九、高级技巧
9.1 生成 HLS 流
ffmpeg -i input.mp4 -c:v libx264 -c:a aac \
-hls_time 10 -hls_list_size 0 -hls_segment_filename "segment_%03d.ts" \
output.m3u8
9.2 添加水印
# 图片水印(右下角)
ffmpeg -i input.mp4 -i watermark.png \
-filter_complex "overlay=W-w-10:H-h-10" output.mp4
# 文字水印
ffmpeg -i input.mp4 -vf \
"drawtext=text='我的水印':fontsize=24:fontcolor=white@0.5:x=W-tw-10:y=H-th-10" \
output.mp4
9.3 截取视频截图
# 指定时间截图
ffmpeg -i input.mp4 -ss 00:00:30 -vframes 1 screenshot.jpg
# 每隔 10 秒截取一张
ffmpeg -i input.mp4 -vf "fps=1/10" screenshot_%04d.jpg
总结
FFmpeg 是视频处理领域的瑞士军刀,掌握常用命令后可以在搬瓦工 VPS 上完成几乎所有的音视频处理任务。配合 Shell 脚本可以实现批量自动化处理。如果你需要搭建直播服务,可以参考 RTMP 直播服务器教程;如果需要视频托管平台,可以参考 PeerTube 或 Plex 教程。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的循环折扣。如遇问题,可前往 搬瓦工官网 提交工单。