FFmpeg安装
FFmpeg 是一款免费开源的跨平台音视频处理工具,被誉为音视频领域的"瑞士军刀"。
| 功能 | 说明 |
| ----------- | ----------------------------- |
| **格式转换** | MP4 ↔ AVI ↔ MKV ↔ MOV 等任意格式互转 |
| **提取/分离** | 从视频中提取音频、提取字幕、分离音轨 |
| **剪辑合并** | 截取片段、拼接多个视频、裁剪画面 |
| **编码压缩** | 调整分辨率、码率、帧率来压缩文件大小 |
| **添加/移除字幕** | 嵌入字幕、提取字幕、移除字幕流 |
| **录制推流** | 屏幕录制、摄像头捕获、直播推流 |
| **滤镜处理** | 加水印、去水印、调色、模糊、旋转等 |
去字幕要
-
软字幕:一条命令直接移除或提取,不重新编码,速度快、无损
-
硬字幕:通过裁剪、模糊、遮罩等滤镜处理
-
完全免费,无需安装大型软件
FFmpeg安装途径
用 winget 一键安装(最简单)
以管理员身份打开 CMD,输入:
bash
winget install Gyan.FFmpeg
视频字幕
利用FFmpeg,可以将mp4视频中的字幕去掉。
软字幕(外挂/内封):可单独关闭或提取
硬字幕(内嵌):直接烧录在画面像素中,无法简单分离
bash
# 查看字幕流信息
ffmpeg -i input.mp4
# 移除所有字幕流(复制视频和音频,不复制字幕)
ffmpeg -i input.mp4 -c copy -sn output.mp4
# 提取字幕为单独文件
ffmpeg -i input.mp4 -map 0:s:0 subtitles.srt
硬字幕无法完美去除,只能遮盖 或裁剪:
遮盖字幕
遮盖字幕区域
bash
# 对底部区域应用模糊效果
ffmpeg -i input.mp4 -vf "delogo=x=0:y=ih-80:w=iw:h=80" -c:a copy output.mp4
# 或用纯色遮罩
ffmpeg -i input.mp4 -vf "drawbox=x=0:y=ih-80:w=iw:h=80:color=black@1:t=fill" -c:a copy output.mp4
对于电脑中的视频,进行如下操作:
bash
# 或用纯色遮罩
ffmpeg -i 1986-天空之城_2.mp4 -vf "drawbox=x=0:y=ih-100:w=iw:h=80:color=black@1:t=fill" -c:a copy output2.mp4
裁剪字幕
(字幕在底部黑边处)
bash
# 裁剪底部 50 像素(根据实际调整)
ffmpeg -i input.mp4 -vf "crop=in_w:in_h-50:0:0" -c:a copy output.mp4
在CMD中进入视频所在的文件夹。E:\计算机多媒体\视频
cpp
ffmpeg -i 1986-天空之城_2.mp4 -vf "crop=in_w:in_h-100:0:0" -c:a copy output2.mp4
执行以上代码之后,发现文件体积有所膨胀。
为什么裁掉一行反而变大?
-
一定会触发重编码
ffmpeg -vf crop=...→ 必须解码 → 裁画面 → 再编码。原视频是别人压好的、高度优化的;你重编码等于 "重新打包",默认参数往往更保守、体积更大。 -
默认码率 / 质量太高(最常见)
ffmpeg 默认 x264:CRF 23 ,对很多高压缩的网片来说偏高质量、偏肥大。原视频可能是 800 kbps ,你重编码默认跑到 2000--5000 kbps,哪怕分辨率小一点,体积照样涨。
-
画面 "变干净" 反而不好压?
字幕那一行往往是高对比度、高频细节 ,压缩时开销大;裁掉后,剩余画面更平、噪声更少 ,编码器反而分配了更高比特率去 "保质量",结果体积上去。
-
音频也被重编码了
不加
-c:a copy,音频也会重新编码(比如 aac 默认 128k),额外增加体积。 -
容器 / 元数据差异(次要)
mp4/mkv 封装、moov 块位置、字幕流等,也会带来几十 KB 到几 MB 差异。
只裁画面、尽量不涨体积、画质差不多,执行如下代码,即可对视频字幕进行优化剪裁。
cpp
ffmpeg -i 1986-天空之城_3.mp4 -vf "crop=in_w:in_h-100:0:0" -c:v libx264 -crf 28 -preset fast -c:a copy output3.mp4
即可完成。