bat批量剪切命令_1024 程序员节,我做了个命令行工具,一行命令批量剪辑心爱的视频...

前排提示:

本文需要你知道命令行工具[1]是什么。

上周我刷完了今夏非常火的仙侠剧《琉璃》,共 59 集,高燃高虐场景甚多。

于是一不小心又上头了,开始胡思乱想:将 59 集内容中所有的精华片段剪出来、拼一起,自己存着慢慢看,岂不美滋滋?

我大三时候在 B 站做 UP 主,最喜欢剪辑心水的电视电影桥段。那时我用格式工厂、Camtasia 软件做最简单的视频剪切和拼接,仍会觉得在下载/打开视频软件、剪辑的按键操作、视频的导入导出等方面,花费了很多时间。

后来我明白了,这其实是大部分 GUI(图形化用户界面)软件的弊端:不利于自动化批量操作、注重与用户交互导致操作延时等。

「打工人 Coco」的小科普:

GUI 强调通过图形化效果与人类直接交互,信息以多层次的方式呈现,视觉元素更丰富。这种信息呈现的复杂设计使得自动化变得非常困难。

另外,为交互而生的 GUI 响应不能太快,因为要留给用户反应时间。有时为了优化用户体验,甚至得故意给某些操作注入延迟。

与 GUI 相反,命令行界面 (CLI) 抛弃图形化展示最大程度提供了自动化能力。因此,对于含有大量重复性操作的事情,如视频批量剪辑合并等,命令行工具 (CLI tool) 是非常适合的选择。

嗯,说服了自己造轮子,那就开搞吧。

基于 ffmpeg 开发的 covideo 命令行工具

ffmpeg[2] 是视频处理最常用的开源软件。它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。——来自阮一峰[3]

如其名,covideo 是一个视频处理相关的命令行工具。只需一行命令,便可批量处理视频。

covideo 的实现原理也很简单,就是用 Python 脚本调用 ffmpeg 强大的视频处理功能,并补足 ffmpeg 命令行本身不提供的批处理能力

covideo 功能速览

目前,covideo 的功能还很初级:

目前支持的功能待支持和优化的功能
剪切视频合并视频、加字幕、加背景音乐或旁白,甚至转码视频、转化格式、连续截图等
剪切常见格式的视频文件,如 .mp4、.m4v、mov、.avi、.mpeg、.wmv、flv、f4v 等剪切更多格式的音视频文件
支持剪切单个文件,也支持批量剪切给定目录下的所有文件支持过滤掉某些文件等
用户必须给出剪切的起始时间点和结束时间点,来剪切该时间段的视频支持起始时间点或者结束时间点为空
仅支持用户利用终端交互方式配置剪切时间点支持在配置文件中定义各个文件的剪切时间点,适合大批量的视频文件处理

了解 covideo 能做什么后,就可以介绍如何下载和使用 covideo 了。

下载 covideo

准备工作:

•需要提前安装 ffmpeg 和 pip。安装 ffmpeg 的小白教程可以参考这篇文章。•注意记下 ffmpeg 可执行文件解压后所在的目录,后面会用到。

准备工作做好后,打开终端,执行如下命令,下载 covideo 命令行工具:

pip install covideo

预期输出如下,包含“Successfully installed covideo-xxx”关键词即下载成功:

Collecting covideo  Downloading https://files.pythonhosted.org/packages/62/f2/61045e4654fd5b9ff6ba5cf499e08a78d5f1a509d89334be4dea41455fb3/covideo-0.0.3-py3-none-any.whlInstalling collected packages: covideoSuccessfully installed covideo-0.0.3

covideo 选项介绍

下载完成后,就可以使用 covideo 命令行啦!

先在终端执行 covideo -h,看看 covideo 目前支持哪些选项 (Options):

yikekedembp:~ coco$ covideo -hUsage: covideo [options]Options:  --version             show program's version number and exit  -h, --help            show this help message and exit  -c CLIP, --clip=CLIP  Use this option to clip videos of many formats;                        receive one argument that can be a file path or a                        directory

选项说明:

--version 和 -h/--help 是默认选项,方便用户查看命令行工具的版本和帮助信息。•-c/--clip 选项对应的就是剪切视频的功能(目前唯一的功能?)。用户需要在选项后提供单个视频或文件夹的地址,便可自动批量剪切给定地址下的视频。

使用 covideo -c 命令剪切视频

接下来看看使用 covideo -c 命令来剪切视频,有多么简单、丝滑(尖叫般的体验,为 ffmpeg 打 call!):

首先,进入前面提到的 ffmpeg 可执行文件解压后所在的目录,在终端执行如下命令:

cd 

之后便可以愉快地调用 ffmpeg 的强大能力来处理视频了!

下面是一个简单的录屏:

3f46cf1e3e56ca2911c5b825920e90a5.gif

该录屏中执行了一条 covideo -c "/xxx/test-videos" 命令,做的事情是:

•遍历 test-videos 目录下的所有视频•用户针对不同视频给出指令,确定剪切的起始时间和结束时间•目录下非支持格式的视频,会在最后报出来

大概 1~5 秒内,两个剪出的视频(基于选取的时间段命名)就出现在新生成的 clips 目录了:

ba333fbb8b3c38e1e96f43e5a69ab60a.png

401 MB 的 琉璃第二集.mp4 剪了 10 分钟出来,生成视频为 67.7 MB;130.6 MB 的数据库.mp4 剪了 111 秒出来,生成视频为 10.6 MB。可以看出,剪辑的速度和压缩率还是不错的。

项目地址:https://github.com/yikeke/covideo新手上路, 望重喷 :) 我不怕错,怕的是没人教我、没人挑我错。欢迎贡献(或许有大佬愿意带我飞嘛 :)

covideo 的定位和价值

看到这里,也许你会问:这本质上不就是一条 bash 批处理命令嘛,为什么要大费周章包装成一个命令行工具?

我初步想了想,covideo 的定位应该是补足 ffmpeg 批量处理文件的能力。它本质上是一群批处理脚本的集合,每个脚本对应一个 ffmpeg 功能的批处理实现。

因此,它的价值可以有以下几点:

1.提高 availability 和 accessibility:每个人都在本地维护七八个批处理脚本,自然不如将这些脚本上传服务器,以命令行形式向未来更多的人提供服务。2.提高 usability:ffmpeg 命令行参数太多太复杂,我实在看得头疼,相信不少人有同感。为了我们这部分小白的使用,我利用 covideo 做了些更易用的交互逻辑。

以上都是我现编的 ;) 希望有说服到你。最重要的原因其实是:最近我在学习命令行工具,正好有适用场景撞上门来,当然得撸起袖子肝一肝。

结语

有了 covideo,以后我看片的最佳实践也许会变成:边看片,边在 covideo 的配置文件中记录高能片段的时间点。看完后,输入一条命令,即可将所有喜欢的片段立刻裁剪合并,生成一个高能大合辑。

联想到 B 站的很多影视区 UP 主,需要在自制解说视频里穿插大量原剧的剪辑片段,也许他们的场景里,covideo 也能派上用场呢。

References

[1] 命令行工具: https://baike.baidu.com/item/命令行界面[2] ffmpeg: https://zh.wikipedia.org/wiki/FFmpeg[3] 阮一峰: https://www.ruanyifeng.com/blog/2020/01/ffmpeg.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值