按章节切分youtube视频

[广告:最高 ¥2000 红包]阿里云服务器、主机等产品通用,可叠加官网常规优惠使用 | 限时领取

我经常从youtube搬运一些优秀的编程教学视频到bilibili,欢迎关注我的频道:狂奔的男尸的个人空间 – 哔哩哔哩 ( ゜- ゜)つロ 乾杯~ Bilibili

youtube没有B站的分P机智,youtube多个视频叫播放列表(playlist)。单个视频长度过长的情况下,提供分章节的机制。

生成这些章节信息,只需要在视频的描述中添加章节的开始时间及标题就行了。如:

⭐️ Course Contents ⭐️
⌨️ (0:00:00) Intro
⌨️ (0:00:56) Lists
⌨️ (0:16:30) Tuples
⌨️ (0:29:49) Dictionaries
⌨️ (0:42:40) Sets
⌨️ (0:58:44) Strings
⌨️ (1:22:50) Collections
⌨️ (1:36:43) Itertools

然后youtube就会在视频的进度条上进行切分,鼠标浮动上各个片段上,会显示该章节的名称和进行预览。

而做为一个优秀的youtube搬运工,不能做简单的搬运。于是我写了个简单的js脚本,按描述中的章节时间切分视频。


1 结构化数据

通过编辑器列选择工具,初步删除一些的多余符号,如emoji、括号等。

对字符串按行分割成数组,去掉空行。

结构化数据,获取视频片段的json数据:

  • 获取视频片段开始时间 start
  • 获取视频片段名称name,去掉 ? 或 * 号等不合法的文件名符号。

2 生成FFmpeg分割视频字符串

FFmpeg 是视频处理最常用的开源软件。

它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。

FFmpeg分割视频的命令行为:

ffmpeg -i [input] -ss [start] -to [end] -c copy [output]

其中:

  • input 被分割视频文件名
  • start 片段开始时间
  • end 片段结束时间
  • output 分割完成视频文件名

我的思路就是将结构化的视频章节数据,转化成FFmpeg字符串。

选择reduceRight对数组进行字符串拼接:

  • 传入初始值 “last”,用于标识最后一个片段
  • 规整化文件名
  • 返回当前片段信息,为下一个片段提供结束时间

3 批量执行FFmpeg命令

执行以上脚本,得到FFmpeg命令行字条串:

打开cmd命令行,去到 Intermediate Python Programming Course.mp4所在的目录,执行以上脚本,即可分割视频。

上传到bilibili:中级python教程【6小时】_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili

完整代码:分割youtbue视频 – 代码片段 – 码云 Gitee.com

码中人 微信公众号

关注微信公众号

码中人 微信公众号

发表评论

电子邮件地址不会被公开。 必填项已用*标注