批量压缩视频

批量将一个文件夹下的所有视频(递归处理)进行压缩,压缩得到的视频存在对应文件夹compress目录下。

用途:对于非剪辑需要的,只用于观看的手机录像,码率显然过高,且压缩很差。故写此程序,节省手机存储空间。

image

下载

如果不懂,下载 完整版,将文件夹拖到v1.2.exe上即可。

v1.2.1
修复了v1.2完整版时长读取失败的问题。其他版本请使用v1.2

v1.2
添加了进度条,更好的交互。

v1.1
添加了配置界面,添加了测试,更好的日志

v1.0

用法

如果使用完整版,软件启动后控制台(黑窗口)会卡一段时间,请耐心等待。 操作方法:

如电脑有ffmpeg且在PATH中(即cmd可直接运行ffmpeg命令),将目标文件夹拖到软件上即可。

注意,不是将文件夹拖到配置界面中,而是直接拖到可执行文件上!!

说明:默认使用的进度条时间为估算,即假设电脑处理视频的速度相同,可能存在较大误差。如想获得较为精准时间,请参考下文train​参数

配置界面:


您可以在配置中

  • 自定义码率

  • 修改CRF(值越小,质量越高,文件越大)。

  • 如您拥有GPU,可以选择硬件加速。

  • 如您认为压缩过慢,可以在舍弃一定质量的情况下,选择较快的预设。

  • 如您了解ffmpeg,可以通过额外参数列表和手动参数列表控制。

[size=4]如果出现闪退等问题,反馈时上传logs目录中的文件[/size]

高级用法

现在可以通过配置界面进行操作了

软件运行后,在软件同目录下回建立logs​文件夹记录所有异常。
在可执行文件同目录下写文件config.json​,包含一个字典:

参数

类型

默认

说明

crf

str

18

ffmpeg中控制质量的参数,数值越小,画质越高,文件越大

codec

str

h264

编码格式,可使用硬件加速。如追求更小文件可选用hevc

ffmpeg

str

ffmpeg

指定ffmpeg​位置

video_ext

字符串数组

[".mp4", ".mkv"]

待压缩的视频格式

extra

字符串数组

[]

额外的ffmpeg​参数

manual

字符串数组

null

手动指定ffmpeg​所有参数

train

bool

false

见后文

  1. train

通过统计视频压缩用时和视频大小,粗略估计压缩用时。小文件估计时间有显著误差
指定true后将进行记录并在退出是保存结论数据,后续运行时将现实预计时间。
功能不是很稳定,仍在调试。

  1. config.json​例

用途:为所有视频在压缩的同时倍速4x

{
    "crf": 26,
    "extra":[
        "-filter:v", "setpts=0.25*PTS","-filter:a", "atempo=4.0"
    ]
}

开源地址:

由于github账号问题,暂时转移到:https://git.flt6.top/flt/tools
原仓库:https://github.com/flt6/tools/tree/master/VideoCompress