訂閱頻道
30 MIN@handle、頻道網址、UC 開頭的頻道 ID 都能加。每 30 分鐘自動抓一次新影片。
macOS App · Source on GitHub
Squelch 只抓音軌,不解碼影片,不用登入。訂閱想聽的頻道,新影片自動進來;每部記住聽到哪,業配自動跳過,關掉視窗照樣在背景播。
名字取自無線電的靜噪 SQUELCH:訊號弱的時候把雜訊切掉,只留人聲。
Features
第一次打開是空的,從右上角的 + 加頻道。頻道清單、進度、待播清單都只存在你自己的 Mac 上。
@handle、頻道網址、UC 開頭的頻道 ID 都能加。每 30 分鐘自動抓一次新影片。
「最新」「聽到一半」「待播清單」。待播清單可以拖拉排序。
每部影片各自記位置,下次打開從那裡接著聽。
用 time-domain 變速,3 倍速講話還是原本的音高。
⌘↑ ⌘↓ 調整,點喇叭靜音。超過 100% 是真的放大,加了柔性限幅不爆音。
用 SponsorBlock 跳過贊助片段。設定裡還能加開自我宣傳、訂閱提醒。
控制中心的「正在播放」、媒體鍵、耳機按鍵都能用。關掉視窗照樣播,選單列有控制。
你勾選的頻道每 10 分鐘查一次,正在直播的標「直播中」排在最上面,點了直接聽。
工具列搜尋 YouTube,右鍵把結果的頻道加進來。貼影片網址直接播,直播回放、沒訂閱的頻道都行。
yt-dlp --flat-playlist -J 讀頻道的影片分頁。
yt-dlp -f 234/233 -j 拿到 HLS 純音訊串流的網址。
直接串流 HLS。開播快,跳到任何位置都不用等。
約 1 秒就緒FALLBACK沒有 HLS 的影片,改用 yt-dlp 把 m4a 下載到快取再播,16 分鐘的影片約 2 秒。快取一週沒用就自動刪掉。
bytes=0-,6 秒只給 ~200 KB,要自己切成有上限的 Range。available_at),太早請求回 403。Volume boost
AVPlayer 的音量最高 100%。要更大聲,只能在音訊路徑上自己加增益(MTAudioProcessingTap),再壓住峰值。
Loudness · LUFS(−40 到 0)
實測兩部 Theo 的影片,跟 Spotify 的 −14 LUFS 標準差約 7 dB。原始峰值已經到 −2~−3 dBFS,不壓住的話一放大就爆音。
Soft limiter · 放大後的振幅 → 輸出
MTAudioProcessingTap(實測處理函式被呼叫 0 次)。所以音量拉過 100% 時,背景先把音軌下載到快取,下載好就從同一個位置切過去,45 分鐘的影片約幾秒。Sign-in is optional
登入的話多一個「訂閱動態」,進度也會回報給 YouTube,網頁版和手機可以接著看。登入頁開在 App 裡,cookie 存在 Squelch 自己的 WebKit 資料區,跟瀏覽器分開。做法參考 Kaset。
/live 頁的 isLive,一個頻道一個請求。yt-dlp 官方提醒:帳號搭配 yt-dlp 有被暫時或永久封鎖的風險。所以帶帳號的請求越少越好,不登入照樣能用全部的核心功能。
Install
Apple Silicon 的 Mac,系統要 macOS 26。yt-dlp 解 YouTube 需要 JavaScript 執行環境,所以 deno 也要裝。
brew install yt-dlp deno
哪天抓不到影片,多半是 YouTube 又改了東西,先跑 brew upgrade yt-dlp。
# 要 Xcode 和 xcodegen
brew install xcodegen
git clone https://github.com/jason5545/Squelch.git
cd Squelch
make run
簽章用的是 project.yml 裡的 DEVELOPMENT_TEAM,自己建置時換成你的 Team ID。