47 lines
1.9 KiB
Markdown
47 lines
1.9 KiB
Markdown
# python-ffmpeg-hevc-crf18
|
||
正如其名,按照固定配置(HEVC CRF 18)压制视频,“以尽可能不影响画面的情况下压缩体积”。
|
||
|
||
## 依赖
|
||
|
||
唯一不可或缺的只有`ffmpeg`。无论 Windows 还是 Linux,获取这个软件包并不难。
|
||
|
||
可选第三方 Python 库:`tqdm`和`colorlog`。没有也没关系,接口是兼容的。
|
||
|
||
## 应用
|
||
有两种命令行调用。当模块导入挑着用也没问题,只是没必要。
|
||
|
||
- `cmps_hevc_crf18 [-d SRCDIR] [-o OUTDIR] [-f EXT1] [-f EXT2] [-r] [-s]`
|
||
- `cmps_hevc_crf18 [-r] [-s] [-o OUTDIR] files`
|
||
|
||
剩下的直接翻译 argparse 帮助文本得了:
|
||
```
|
||
编码视频文件为 HEVC CRF 18(MP4)格式。
|
||
|
||
位置参数:
|
||
files 单独的视频文件(与 -d 互斥,二选一)
|
||
|
||
选项:
|
||
-h, --help 鹰文帮助
|
||
-d, --dir SRCDIR 源文件夹(会在里面搜索指定后缀的文件,与 files 互斥)
|
||
-o, --outdir OUTDIR 输出文件夹(默认原地,跟 -d 合用会保留相对路径)
|
||
-f, --ext EXTENSIONS 指定的后缀名(.mp4 和 mp4 均可,可重复指定多个后缀,不区分大小写)
|
||
-r, --rm-original 跑完是否把原文件删了
|
||
-s, --silent 静默(不显示进度条)
|
||
```
|
||
|
||
## 背景
|
||
实际就是命令行:
|
||
```sh
|
||
ffmpeg -i input.mp4 -c:v libx265 -crf 18 -preset medium -c:a copy -tag:v hvc1 output.mp4
|
||
```
|
||
写那么多 Python 封装只是为了路径处理和好看一点的终端输出。
|
||
|
||
而在 Windows 里文件所有权并不复杂(当前用户通常都可以读写),我更倾向于用 PowerShell:
|
||
```powershell
|
||
get-childitem path -File -Recurse -Filter *.mp4 | foreach {
|
||
cmps_hevc $_.FullName # 依旧 ffmpeg,也就变换一下 input.mp4 output.mp4
|
||
rename-item $_.FullName "$($_.Name).bak"
|
||
}
|
||
```
|
||
就算后续还要筛选(好比有的视频压制完比原文件还大),也比 Python 方便得多。
|