tl;博士- 观看视频解释器:
https://youtu.be/ZiGeVvNGn9c
我想出了两种不同的方法来使用ffmpeg批量转码一个充满视频文件的文件夹。据我所知,ffmpeg 将复制所有元数据而不进行修改。
纯 Python 方式
https://github.com/nuket/Shrinkr#shrinkr-batch-transcode-python-edition
SCons 方式
https://github.com/nuket/Shrinkr#shrinkr-batch-transcode-scons-edition
一种使用纯 Python,另一种使用SCons构建脚本。视频转码在概念上类似于编译软件,所以我试了一下。
这两种方式都可以让您重复运行批处理并且不会重复工作,除非源文件发生更改,否则不会再次执行已转码的文件。
在这两种方法中,我更喜欢 SCons 方法,因为它利用 SCons 构建系统来检查输入/输出文件的更改。SCons 的一个缺点是,由于某种原因,它需要一段时间才能开始运行,但一旦它弄清楚它需要做什么,它就会ffmpeg
快速执行所有调用。
要开始,您需要做的就是:
pip3 install scons
git checkout https://github.com/nuket/Shrinkr
- 复制
ShrinkrArchive
到包含所有视频的文件夹。(如果需要,重命名文件。)
- 编辑此行以设置所需的
ffmpeg
参数。
- 编辑此行以收集您想要的所有文件(即
*.mp4
或*.mkv
)。
- 在该文件夹中打开命令行提示符。
- 运行
scons -f ShrinkrArchive
。
您需要ffmpeg
系统中某处的副本PATH
,当然,还需要 Python 3.x 的工作副本。
否则,它很容易使用。我一直在使用它将截屏视频转码为更高压缩的版本,然后将它们踢出冷存储并节省 66 - 75% 的文件大小。(屏幕截图通常是低熵的。)
@Takin - 根据您的要求:
如果可能(不是必需的),我还希望将文件名设为“YYYYMMDD_HHMMSS”。
您也可以在 ShrinkrArchive 文件(这只是一个 SCons 构建脚本)中执行此操作,您必须将文件stat
调用添加到文件名发射器并更改此行,这决定了调用输出文件的内容。
然而,这是一个留给读者的练习。
无论如何,希望这可以帮助任何需要转码一堆文件并且不想使用 GUI 来完成它的人。
如果有人有问题,请随时在此处或 GitHub 上打开一个新主题。