最近打算把某个小孩玩具改造成MP3播放器(其内置音乐已经听厌了),所以需要一些 mp3 音频。

YouTube上有大量的音乐合集视频,也有章节信息,下载下来分割一下就行了,比去各种下载站找资源更高效。

下载 YouTube 音频

之前下载 YouTube 视频用的是 youtube-dl,但现在 homebrew 和 pip 都下载不到最新的了,repo里贴的下载链接也 access denied。

有个派生版本 yt-dlp 可以从 homebrew 安装,就用它了。参数跟 youtube-dl 基本一致,加上 -x (--extract-audio) 只下载音频。

brew install yt-dlp

yt-dlp -x https://www.youtube.com/watch\?v\=LEIukRNZSCY

得到一个 1个多小时的 opus 音频文件。

分割音频

credit: https://unix.stackexchange.com/a/400032/584020

从视频介绍里复制出章节信息,用 VSCode / Sublime 等编辑器可以快速处理成下面这种格式。

list.txt:

0:00     2:35     海底
2:35     6:32     我看到了光
6:32     9:07     美与节拍
...

再新建一个 awk progfile。

下面脚本里没有给文件名转义,所以上面的名字里注意下不要有特殊字符,或者改脚本。

上面的音频文件改成 input.opus,或者改脚本里的文件名。

prog.txt:

{
    # make ffmpeg command string using sprintf
    cmd = sprintf("ffmpeg -i input.opus -ss %s -to %s %s.mp3", $1, $2, $3)

    # execute ffmpeg command with awk's system function
    system(cmd)
}

然后执行 awk 就得到分割后的 mp3

awk -f prog.txt list.txt