把演唱會實錄轉成可重播的歌單:我用 mpv 對拍的笨辦法

这篇内容暂时只有 繁體中文 版本,以下是原文。

上個月拿到一場小型 Live 的現場錄音,48kHz/24bit 的 WAV,整場 1 小時 47 分,中間有兩段 MC 跟一次換弦的空白。我想把它切成能放進播放器的單曲,但不想靠猜——之前那批現場檔就是憑耳朵切,事後回頭聽,副歌前奏被砍掉半拍的地方至少五、六處。

這次的做法是拿 mpv 當對拍工具。先把原檔跟一份已知 BPM 的參考曲放進同一個播放清單,用 mpv --audio-file-paths 之外的方式其實不必要,重點是這幾個參數:

mpv live.wav --speed=1.0 --audio-pitch-correction=no \
  --script-opts=osc-visibility=always --osd-level=2

真正的關鍵是按鍵:[ 和 ] 在 mpv 裡是調速度,但我要的是標點,所以改用 --input-conf 綁自訂鍵,把當前時間戳印到終端:

Ctrl+t script-message-to console print-text "${time-pos/full}"

一場下來我按了 37 次,終端留下一串秒數。把這些秒數貼進一個純文字檔,再用 ffmpeg 的 -ss 逐段切:

ffmpeg -ss 0 -to 214.6 -i live.wav -c copy 01_intro.wav
ffmpeg -ss 214.6 -to 402.1 -i live.wav -c copy 02_song.wav

-c copy 不動編碼,切點落在樣本邊界附近會有極小的爆音,但我這場是 24bit,聽不出來;代價是切點不能任意精準到毫秒,得接受幾毫秒的誤差。

為什麼不直接用 Audacity 看波形?因為我看波形會分心,而且現場的掌聲會把波形撐滿,人聲反而扁掉。用 mpv 純聽、只按時間戳,逼自己用耳朵判斷「這裡是進歌點」,判斷錯的成本是重聽一次,不是重拉一次波形。

失效的地方很明確:節奏自由的段落,比如那段清唱,我按出來的時間戳跟實際樂句起點差了快 0.4 秒;還有換弦那段空白,我切完才發現它被併進前一軌的尾巴,後來手動補切。另外 -ss 放在 -i 前面是關鍵幀快進,對 WAV 沒差,但如果你拿的是 MP3 或 AAC,切點會被拉到最近的关键帧,得改成放 -i 後面重編碼,慢很多。

現在這份歌單 12 軌,我重播了三次,只有一軌的結尾收得比較倉促。你們切現場檔的時候,是接受幾毫秒的誤差直接 -c copy,還是寧願重編碼換精準?

0
赞同度 100% · 0 条评论 · 4 阅读

0 条评论

支持 Markdown · 回复会实时推送给对方

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