bgmusic
從公有領域目錄中為影片找到真正的背景音樂,無需下載函式庫或標示出處。
當內建音樂已足夠時
public/sfx/ 已內建兩首背景音樂,且皆不需花費請求次數:
music-bed.mp3,一首 60 秒的環境無人機音效。適合簡短的技術示範影片。pulse-bed.mp3,112 bpm,並附有精確的提示網格檔案pulse-bed.cues.json。這是唯一一首節拍鎖定剪輯是精確而非估計的曲目,因為它是合成而非分析的。
當影片很短、以旁白為主,或音樂只需要不讓影片寂靜無聲時,請使用它們。當影片是發表或宣傳性質,且背景音樂需要承載情緒時,才需要進行搜尋。
兩個目錄
| 來源 | 內容 | 大小 |
|---|---|---|
lofi | btahir/open-lofi,166 首 lo-fi 曲目,分為 10 個類別 | 每首約 3MB |
cc0 | SoundSafari/CC0-1.0-Music,約 9200 首曲目,來自 freepd、chosic、Free Music Archive、freesound 及 Pixabay | 每首 2-15MB |
兩者皆為 CC0-1.0 授權。屬於公有領域,可商業使用,無需標示出處,也無需在影片描述中提及。這就是為什麼這兩個目錄被直接整合,而 plan_sound_effects 仍需手動引導使用者前往 Pixabay 尋找音效。
有一個值得明確提出的注意事項:這些曲目是由社群彙整,並依下架要求運作,因此每首曲目的 CC0 聲明是維護者的主張,而非您已閱讀過的授權條款。對於產品影片而言這沒問題,且來源檔案會記錄來源。若錯誤的授權會造成昂貴後果,請只使用 lofi,它只有單一作者、單一版本、單一授權聲明。
流程
find_music_bed -> [使用者試聽] -> import_music_bed -> plan_music_cues -> stitch_composition
1. find_music_bed
使用純粹的情緒或場景詞彙查詢:"calm focus coding"、"late night neon"、"warm upbeat"。會比對標題與類別。
首次呼叫會建立索引,約需七次 GitHub API 呼叫,快取於 output/music-index.json。後續搜尋僅為本地讀取。僅在目錄發布新版本時才傳入 refresh: true。
lofi 的類別是真實的中繼資料,因此 category: "ambient-lofi" 有效。Corpus 曲目則無類別:該處的曲目只是以來源網站命名的資料夾中的一個檔名。當無任何項目匹配時,工具會回傳一個樣本並設定 matchedQuery: false。這是一個訊號,表示應嘗試作曲家會放在標題中的字詞,而非放棄。
讓使用者挑選。 回傳三到五個候選項目及其標題與類別。音樂是品味問題,錯誤的背景音樂比錯誤的字型更引人注意。
2. import_music_bed
import_music_bed(id: "lofi:terminal-rain", out: "public/audio/music-bed.mp3", seconds: 45, start: 12)
除下載之外的功能:從 start 處修剪 seconds 長度、淡入淡出、並標準化音量至 -20 LUFS,使背景音樂位於旁白之下而非與之爭搶。傳入 raw: true 可跳過所有這些處理,保留曲目的原始樣貌。
放置位置:
public/audio/music-bed.mp3:用於組合的背景音樂。stitch_composition會自動附加此路徑,因此無需更改其他設定。public/imported_audios/(預設):用於其他任何目的,此資料夾存放非來自內建套件的素材。
它會在曲目旁邊寫入 <file>.source.json 及 MUSIC-SOURCES.md 的一行記錄:ID、標題、來源儲存庫、授權、日期。CC0 授權不要求這些記錄,但這麼做是為了讓一年後,背景音樂的來源可以透過讀取檔案得知,而非憑猜測。
使用 start 跳到曲目的中間部分。前奏通常是最不實用的部分,且從強拍開始的背景音樂無需編輯就能感覺有設計感。
3. plan_music_cues
對匯入的檔案呼叫此功能。對於非 pulse-bed.mp3 的任何曲目,網格是根據起始包絡估計的,因此請將其視為規劃指引:將少數主要揭露點對齊 strongCues,而非每個剪輯點。docs/STYLE.md 中有容許誤差範圍。
成本與限制
- 無任何內容被供應商鎖定。
open-lofi僅將其曲目發布在一個 554MB 的發布版壓縮檔中,因此匯入時會透過 HTTP 範圍請求讀取該壓縮檔的中央目錄,並僅拉取所選成員的位元組。這 554MB 從未被完整下載。 - 塑形背景音樂需要在 PATH 環境變數中有
ffmpeg。使用raw: true則不需要。 - GitHub 未驗證的 API 限制為每小時 60 次請求。建立一次索引約花費七次。若機器頻繁重建索引,請設定
GITHUB_TOKEN。 - 索引快取位於
output/目錄下,此目錄已在 scaffolded 專案中被 gitignore。
不應做的事項
- 不要將整個目錄提交到專案中。一個影片配一首背景音樂是這裡的單位。
- 不要將曲目放入
public/sfx/。該資料夾是隨套件提供的內建套件,且public/sfx/CREDITS.md說明了其內容及為何不帶任何條款。 - 不要將此用於音效。
plan_sound_effects會先檢查內建套件,然後才進行搜尋,這對於音效來說是正確的順序。