SQUELCH
MACOS 26
AUDIO ONLY
V0.5.1

macOS App · Source on GitHub

把 YouTube 頻道
當 podcast 聽。

Squelch 只抓音軌,不解碼影片,不用登入。訂閱想聽的頻道,新影片自動進來;每部記住聽到哪,業配自動跳過,關掉視窗照樣在背景播。

名字取自無線電的靜噪 SQUELCH:訊號弱的時候把雜訊切掉,只留人聲。

Features

像 podcast App 一樣用

第一次打開是空的,從右上角的 + 加頻道。頻道清單、進度、待播清單都只存在你自己的 Mac 上。

訂閱頻道

30 MIN

@handle、頻道網址、UC 開頭的頻道 ID 都能加。每 30 分鐘自動抓一次新影片。

三個清單

LISTS

「最新」「聽到一半」「待播清單」。待播清單可以拖拉排序。

記住聽到哪

RESUME

每部影片各自記位置,下次打開從那裡接著聽。

變速不變調

1×–3×

用 time-domain 變速,3 倍速講話還是原本的音高。

音量到 200%

BOOST

⌘↑ ⌘↓ 調整,點喇叭靜音。超過 100% 是真的放大,加了柔性限幅不爆音。

業配自動跳過

SPONSORBLOCK

用 SponsorBlock 跳過贊助片段。設定裡還能加開自我宣傳、訂閱提醒。

跟系統接在一起

NOW PLAYING

控制中心的「正在播放」、媒體鍵、耳機按鍵都能用。關掉視窗照樣播,選單列有控制。

直播中

10 MIN

你勾選的頻道每 10 分鐘查一次,正在直播的標「直播中」排在最上面,點了直接聽。

搜尋、貼網址

SEARCH

工具列搜尋 YouTube,右鍵把結果的頻道加進來。貼影片網址直接播,直播回放、沒訂閱的頻道都行。

How it plays

按下播放,大約 3 秒有聲音

解析 YouTube 全部交給 yt-dlp,播放交給 macOS 的 AVPlayer。影片畫面從頭到尾不會下載。

  1. 01 · LIST

    抓頻道清單

    yt-dlp --flat-playlist -J 讀頻道的影片分頁。

    約 0.6 秒
  2. 02 · RESOLVE

    解出純音訊

    yt-dlp -f 234/233 -j 拿到 HLS 純音訊串流的網址。

    約 2 秒
  3. 03 · PLAY

    交給 AVPlayer

    直接串流 HLS。開播快,跳到任何位置都不用等。

    約 1 秒就緒

FALLBACK沒有 HLS 的影片,改用 yt-dlp 把 m4a 下載到快取再播,16 分鐘的影片約 2 秒。快取一週沒用就自動刪掉。

為什麼不直接串流 m4a 2026/11/11 實測

  • 開放式 Range 被限速。對 googlevideo 要 bytes=0-,6 秒只給 ~200 KB,要自己切成有上限的 Range。
  • 網址解出來不能馬上用。要等幾秒(yt-dlp 的 available_at),太早請求回 403。
  • DASH m4a 是分段式 MP4。AVPlayer 要把整個檔案讀完才開播,45 分鐘的影片等 12 秒;長度還會算成兩倍(1011 秒 → 2023 秒),續播位置和 SponsorBlock 的時間點全部錯位。yt-dlp 下載時會用 ffmpeg 修正容器,修正後就正常,所以下載備援沒有這個問題。

Volume boost

YouTube 講話比 Spotify 小聲 7 dB

AVPlayer 的音量最高 100%。要更大聲,只能在音訊路徑上自己加增益(MTAudioProcessingTap),再壓住峰值。

Loudness · LUFS(−40 到 0)

影片 A−20.6
影片 B−21.2
SPOTIFY−14.0

實測兩部 Theo 的影片,跟 Spotify 的 −14 LUFS 標準差約 7 dB。原始峰值已經到 −2~−3 dBFS,不壓住的話一放大就爆音。

Soft limiter · 放大後的振幅 → 輸出

0 1.0 0 1.0 2.0 KNEE 0.85 CEILING 1.0
柔性限幅:0.85 以下原樣,以上用 tanh 慢慢壓硬切:到 1.0 直接截斷,聽起來就是爆音
  • HLS 串流不經過 MTAudioProcessingTap(實測處理函式被呼叫 0 次)。所以音量拉過 100% 時,背景先把音軌下載到快取,下載好就從同一個位置切過去,45 分鐘的影片約幾秒。
  • 快取裡已經有的影片直接播本機檔,開播更快,一開始就能放大。
  • 直播沒辦法下載,最大就是 100%。

Sign-in is optional

不登入就能用,登入了也盡量不碰帳號

登入的話多一個「訂閱動態」,進度也會回報給 YouTube,網頁版和手機可以接著看。登入頁開在 App 裡,cookie 存在 Squelch 自己的 WebKit 資料區,跟瀏覽器分開。做法參考 Kaset。

Install

需要 macOS 26 和 yt-dlp

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。