把一张专辑拆成单曲循环:我用 cue+flac 做了个无损分段习惯
手上有一张 1998 年的现场专辑,整轨 FLAC,48 分钟,一个文件。播放器能读 cue,但我想把其中三首单独拎出来放进「通勤」歌单,又不想转成 mp3 损失信息。环境是 macOS,工具是 ffmpeg 6.0 和 shnsplit 那一套里我最后留下的 cuetools。
先看 cue 里到底有没有可用信息:
ffprobe -v quiet -print_format json -show_format album.flac
cat album.cue | head -20
确认 cue 的 INDEX 01 是分秒帧格式(mm:ss:ff,ff 是 1/75 秒),不是毫秒。这一步不确认,后面切出来的头会偏几十毫秒,鼓点进得不对。
我用的切法不是按 cue 整张拆,而是只切需要的三轨。先把 cue 转成 ffmpeg 能吃的分段参数:
ffmpeg -i album.flac -ss 00:03:12.35 -to 00:07:48.10 -c copy track03.flac
关键是 -c copy,不重编码,只做容器层切割。代价是切点只能落在帧边界,可能有一两帧的误差;对现场专辑来说,前一轨的掌声尾巴可能被带进下一轨,我是接受的。
为什么不用整张 split:整张拆会生成十几个文件,命名还得靠 cue 里的 PERFORMER 和 TITLE 拼,脚本一长就容易把中文标题弄成乱码。只切三首,手工核对的时间反而更短。另一个取舍是 -c copy 不会重算 ReplayGain,切出来的单曲响度和整轨不一致,我后来在 foobar2000 里单独扫了一遍。
会失效的地方:如果源是 MP3 而不是 FLAC,-c copy 的切点精度更差,而且部分播放器对切出来的 MP3 头信息处理不一致,会出现时长显示错乱。我踩过一次,同一首歌在手机上显示 0:00。还有一种情况是 cue 里用了 PREGAP,-ss 直接按 INDEX 01 切会丢掉预间隙,前奏会被削掉半秒。这种我现在的做法是先 -ss 往前放 0.3 秒,再听一遍确认。
现在这张专辑我留了整轨,也留了三首单曲,歌单里放单曲,想完整听现场时再回整轨。你们遇到整轨专辑里只想留几首的情况,是切文件还是干脆做个虚拟分段列表?


0 条评论
还没有评论,写下第一条。