cliamp

bjarneoMIT活跃维护

终端里的音乐播放器,界面致敬 Winamp,能连 Icecast、Jellyfin、Navidrome、Plex 等流媒体和媒体库,还支持播客与插件扩展。

cliamp - Terminal music player inspired by winamp

v2.4.0发布于 2026-11-05 17:37 UTC4,599star +12 / 7 天341fork同步于 2026-11-10 11:37 UTC

怎么上手

由 README 提炼,执行前请确认
curl -fsSL https://cliamp.stream/install.sh | sh
brew install bjarneo/cliamp/cliamp
硬件要求按 README 说明

README 未说明显存或 GPU 要求;这是终端音频播放器,不依赖 GPU。Linux 需要 ALSA 开发头文件,PipeWire/PulseAudio 用户需装 pipewire-alsa 或 pulseaudio-alsa 桥接包。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

终端里的复古音乐播放器,一个 TUI 播放本地文件、流媒体和各大音乐平台

终端里的音乐播放器,界面致敬 Winamp,能连 Icecast、Jellyfin、Navidrome、Plex 等流媒体和媒体库,还支持播客与插件扩展。

核心能力

  • 用 Bubbletea 构建终端 TUI,支持频谱可视化和参数均衡器
  • 通过 yt-dlp 播放 YouTube、SoundCloud、Bilibili 等平台内容
  • 内置约 58000 个 Radio Browser 在线电台,可按国家或标签筛选
  • 用 cliamp setup 向导配置 Navidrome、Plex、Jellyfin、Spotify 等服务
  • 支持 cliamp toggle/next/status 命令行远程控制与 --daemon 无界面模式

容易踩的坑

macOS 预编译二进制动态链接 Homebrew 的 flac、libvorbis、libogg、mpg123,需先 brew install 这些库;播放 AAC/ALAC/Opus/WMA 需另装 ffmpeg,播放 YouTube 等平台需另装 yt-dlp;Windows 源码构建必须用 MSYS2 MinGW64 并开启 CGO。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v2.4.0
  1. v2.4.0最新正式版2026-11-05 · 2026-11-05 17:37 UTC

    What's Changed

    • ci(release): pin Linux builds and cap the notes by Bjarne Oeverli (@bjarneo) (a8386f8)
    • docs(site): include WebM among the FFmpeg formats by Charlyls (@cartudev) (05dd52e)
    • docs(site): list MP4 among the local audio formats by Charlyls (@cartudev) (3bb9cc1)
    • style: gofmt the mp4 audio extension test by Charlyls (@cartudev) (2cc9734)
    • feat(player): accept the audio stream of .mp4 files by Charlyls (@cartudev) (0fc1e7a)
    • fix(ui): follow terminal colors in Ethereal by Bjarne Oeverli (@bjarneo) (9928143)
    • feat(navidrome): add track ratings by manuaudio (@manuaudio) (e30c677)
    • feat(netease): add a cookies_file option by JazibAli360 (@JazibAli360) (8b1fe18)
    • fix(resolve): play on.soundcloud.com short links by Renan Bezerra Guimarães (@RenanBezerraGuima) (5e36da0)
    • test(lyrics): make the repeated timestamps test table-driven, add fraction and BOM cases by Jay Hemnani (@jayhemnani9910) (d708f65)
    • docs(playlists): say relative paths in a local PLS file resolve from its folder by Jay Hemnani (@jayhemnani9910) (0424e29)
    • fix(nix): refresh the vendor hash after the Telegram provider by Charlyls (@cartudev) (6f5a67e)
    • fix(nix): refresh the vendor hash for the Go 1.27 toolchain by Charlyls (@cartudev) (1288b78)
    • fix(nix): build with the Go 1.27 toolchain by Charlyls (@cartudev) (2385d92)
    • docs(mediactl): correct the --player=cliamp note by Bjarne Oeverli (@bjarneo) (ac76422)
    • fix(ui): sanitize remote text before rendering (#685) by Acts1631 (@acts-1631) (f1296c9)
    • feat(telegram): add a native MTProto Telegram provider (#651) by Carlos (@cartudev) (a65244f)
    • feat(remote): add --params-file and --params-stdin to cliamp remote call (#641) by Renan Bezerra Guimarães (@RenanBezerraGuima) (fda4d4b)
    • docs(plugins): list album_art_url in the event payloads (#654) by Carlos ([@cartudev](https://gi
  2. v2.3.02026-09-28 · 2026-09-28 18:43 UTC
    查看更新说明

    What's Changed

    • ci(release): build the Intel macOS codec libs from source by Bjarne Oeverli (@bjarneo) (d0501a3)
    • feat(radio): open on the cliamp radio channels as playlists by Bjarne Oeverli (@bjarneo) (30ffcaa)
    • fix(spotify): stop crashing on tracks without normalisation params (#522) by Lukasz Jagiello (@ljagiello) (eb59f54)
    • feat(lua): let queue.add take a track table queued as given (#566) by Gjermund Garaba (@gjermundgaraba) (b4689cf)
    • feat(lua): emit playback.stop when the user stops playback (#536) by Gjermund Garaba (@gjermundgaraba) (2342c0d)
    • fix(ui): omit repeated show names from podcast episode rows (#564) by David Siegel (@dvdsgl) (d0c4e32)
    • feat(lua): expose track.is_live for streams with no track boundary (#535) by Gjermund Garaba (@gjermundgaraba) (f85829d)
    • fix(player): read yt-dlp PCM from a pipe cliamp owns (#561) by Gjermund Garaba (@gjermundgaraba) (276713b)
    • fix(playback): cancel a scheduled reconnect on stop (#556) by Gjermund Garaba (@gjermundgaraba) (e0559a5)
    • fix(resolve): mark yt-dlp live streams as realtime (#534) by Gjermund Garaba (@gjermundgaraba) (f00408b)
    • test(ui): bind a plugin-ownable key in the full-screen visualizer test (#555) by Gjermund Garaba (@gjermundgaraba) (41bab63)
    • fix(ui): pin favorite marker column to avoid layout shift by Taha Sadough (@tahadx) (06ee7af)
    • fix(ui): stop showing add/remove favorite notifications in the footer (#440) by Taha Sadough (@tahadx) (903a1ed)
    • Revert "fix(lua): let plugins bind uppercase keys (#525)" (#547) by bjarneo (@bjarneo) (72d786d)
    • fix(ui): dispatch plugin keys in the full-screen visualizer (#545) by Gaurab KC (@gaurabxkc) (e5baeae)
    • fix(lua): let plugins bind uppercase keys (#525) by Gaurab KC (@gaurabxkc) (ac2d1bc)
    • feat(lua): emit queue.end when playback runs out of tracks (#533) by Gjermund Garaba (@gjermundgaraba) (57ae3ba)
    • feat(spotify): populate album art for Spotify tracks (#527) by Gaurab KC ([@gaurabxkc]
  3. v2.2.02026-09-08 · 2026-09-08 13:27 UTC
    查看更新说明

    What's Changed

    • fix(test): make podcast permissions check portable by Bjarne Oeverli (@bjarneo) (af4d03f)
    • fix(ui): use Ctrl+I to toggle metadata by Bjarne Oeverli (@bjarneo) (e3e6fd4)
    • feat: add podcasts and metadata settings by Bjarne Oeverli (@bjarneo) (9ea5366)

    Checksums (SHA256)

    67662a8ea57aaf22030c4d096805a26700787c017085e8ec4844e7b77e8da75c  cliamp-darwin-amd64
    52210e7a8aeac519154b9c556851684a3be63e54d88ae78c61c9f5ec690849f3  cliamp-darwin-arm64
    60fd335e367d920fbfa898a6c87e419616acb55e712e17b5439ab7573f60d882  cliamp-linux-amd64
    94ae39f5ade4b762293c479c120242925b70187cb09101c9c9ea911f4811a8b4  cliamp-linux-arm64
    c018c8c553361bf944b6cc5c42536a81d8bf2a0532d61adc40a9015ff3850a1f  cliamp-windows-amd64.exe
    af52351e5c76562af2c44d973222aa059527cf866406bf34ab66cc98c27f5c40  cliamp-windows-amd64.zip
    

    Full Changelog: https://github.com/bjarneo/cliamp/compare/v2.1.0...v2.2.0

  4. v2.1.02026-09-07 · 2026-09-07 20:15 UTC
    查看更新说明

    What's Changed

    • refactor(radio): build the default playlist from streams.m3u by Bjarne Oeverli (@bjarneo) (300ec4b)
    • feat(radio): add the Amiga channel by Bjarne Oeverli (@bjarneo) (7d8f0f4)
    • fix(ci): unbreak the lint gate and the macOS codec link by Bjarne Oeverli (@bjarneo) (a187721)
    • feat(ui): raise the visualizer to seven rows, five at the compact tier by Bjarne Oeverli (@bjarneo) (17af02f)
    • Merge pull request #433 from theandrewbailey/navidromeTranscoding by bjarneo (@bjarneo) (3e0c902)
    • Merge pull request #432 from Atarit0/fix/streaming-socks5-proxy by bjarneo (@bjarneo) (667558b)
    • feat(radio): add the Chiptunes channel by Bjarne Oeverli (@bjarneo) (d56c989)
    • feat(ui): make the visualizer a row taller at the full and compact tiers by Bjarne Oeverli (@bjarneo) (9ab827b)
    • feat(ui): split the playback screen into playlist and settings columns by Bjarne Oeverli (@bjarneo) (cb496d6)
    • Merge pull request #441 from theandrewbailey/#436-Remove-theme-name-from-player-view by bjarneo (@bjarneo) (2114484)
    • Remove theme name from player view #436 by Andrew (@theandrewbailey) (a3c2c1d)
    • httpclient: fix lint on the SOCKS5 regression test by Atarit0 (@Atarit0) (d952b14)
    • httpclient: pin the SOCKS5 dial decision to the request, not the dial addr by Atarit0 (@Atarit0) (8e956af)
    • Better Navidrome streamURL building by Andrew (@theandrewbailey) (2888189)
    • httpclient: fall back to ALL_PROXY, drop SOCKS5 credential forwarding by Atarit0 (@Atarit0) (590c921)
    • httpclient: wrap SOCKS5/proxy errors with operation context by Atarit0 (@Atarit0) (0d42df8)
    • Merge branch 'feat/omarchy-visualizer' by Bjarne Oeverli (@bjarneo) (3354038)
    • feat(ui): add Omarchy visualizer mode by Bjarne Oeverli (@bjarneo) (23dc38a)
    • Merge pull request #398 from lkaliturin220-svg/yandex-provider by bjarneo (@bjarneo) ([4f5eb71](https://gi
  5. v2.0.12026-09-02 · 2026-09-02 05:45 UTC
    查看更新说明

    What's Changed

    • fix(radio): remove listener statistics fetching by Bjarne Øverli (@bjarneo) (c9cb29f)
    • Merge pull request #403 from bjarneo/complete-inverse-bool-flags by Gjermund Garaba (@gjermundgaraba) (b2ba923)
    • feat(cli): add inverse forms for boolean config flags by Gjermund Garaba (@gjermundgaraba) (d9d9dd8)
    • ci: fix release site deployment by Bjarne Øverli (@bjarneo) (5c2020e)

    Checksums (SHA256)

    e94e43863e85332add8569300e1ad04b67ecd9a8e832024bcc00b0c22a9c6af1  cliamp-darwin-amd64
    8044ec0d0bc6a14ec29bc36ec3ff8f9bc697aae67d88df845c9fd7caba61ecba  cliamp-darwin-arm64
    a96c2c683bc5c58eeee496e3cc89113da46051a74fe7b2214c7f4092758b852c  cliamp-linux-amd64
    8eb00f3965712d87a55dea029957d40ceb4c7767fdc14db5ba973508204d5936  cliamp-linux-arm64
    3e08d15c5f3e30c90c3e9b6c9ed816edd26d5f4aecac5d6429f01dcda98cb53e  cliamp-windows-amd64.exe
    2b874b74caee3426cc39b55719e7cfc63a06739cd1d7f56649f31ed16cbe9f8f  cliamp-windows-amd64.zip
    

    Full Changelog: https://github.com/bjarneo/cliamp/compare/v2.0.0...v2.0.1

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Docs on contextowl.co

    A retro terminal music player inspired by Winamp. Play local files, streams, podcasts, YouTube, YouTube Music, SoundCloud, Mixcloud, Bilibili, Spotify, Qobuz, Tidal, Bandcamp purchases, NetEase Cloud Music, Yandex Music, Xiaoyuzhou (小宇宙), Navidrome, Lyrion, Plex, Jellyfin, Emby, Audiobookshelf, and Telegram. Use the spectrum visualizer, parametric EQ, and playlists.

    cliamp.stream | docs | android | discord

    On a phone, run cliamp mobile. It is a native Android client for radio, podcasts, and the same servers this player talks to.

    cliamp uses Bubbletea, Lip Gloss, Beep, and go-librespot.

    https://github.com/user-attachments/assets/55e251f2-e13b-43d9-bb6a-7b1960e7d7d0

    Install

    curl -fsSL https://cliamp.stream/install.sh | sh
    

    Homebrew

    brew install bjarneo/cliamp/cliamp
    

    The formula installs all required runtime libraries.

    Arch Linux (AUR)

    yay -S cliamp
    

    Nix

    nix run github:bjarneo/cliamp
    

    For a declarative NixOS configuration, add github:bjarneo/cliamp as a flake input. Install its default package:

    inputs.cliamp.url = "github:bjarneo/cliamp";
    
    environment.systemPackages = [
      inputs.cliamp.packages.${pkgs.stdenv.hostPlatform.system}.default
    ];
    

    Go

    go install github.com/bjarneo/cliamp@latest
    

    Install ALSA development headers before you build on Linux. See Building from source.

    Pre-built binaries

    Download from GitHub Releases.

    macOS: Pre-built binaries link dynamically to FLAC, Vorbis, Ogg, and mpg123 from Homebrew. If you download from Releases or use install.sh, install these libraries first. Otherwise, you can see errors such as Library not loaded: /opt/homebrew/opt/libvorbis/lib/libvorbisenc.2.dylib:

    brew install flac libvorbis libogg mpg123
    

    brew install bjarneo/cliamp/cliamp installs these libraries.

    Linux: Pre-built binaries link FLAC, Vorbis, Ogg, and mpg123 statically. No extra codec packages are required. You can still need an ALSA bridge for your sound server. See Troubleshooting.

    Windows: Download and extract cliamp-windows-amd64.zip from Releases. It includes the codec DLLs that Spotify requires. On Windows, cliamp stores its config under %APPDATA%\cliamp unless HOME names another directory.

    Optional runtime dependencies for all platforms and install methods:

    • ffmpeg for AAC, ALAC, Opus, and WMA playback
    • yt-dlp for YouTube, YouTube Music, SoundCloud, Mixcloud, Bandcamp, Bilibili, and NetEase Cloud Music

    On macOS, run brew install ffmpeg yt-dlp. On Linux, use your distribution package manager.

    On Windows, install ffmpeg and yt-dlp with your package manager. Keep both on PATH.

    Build from source

    git clone https://github.com/bjarneo/cliamp.git && cd cliamp && go build -o cliamp .
    

    Quick Start

    cliamp ~/Music                     # play a directory
    cliamp *.mp3 *.flac               # play files
    cliamp https://example.com/stream  # play a URL
    

    Press Ctrl+K to see all keybindings.

    Configure remote providers such as Navidrome, Lyrion, Bandcamp, Plex, Jellyfin, Emby, Audiobookshelf, Spotify, Qobuz, Tidal, Mixcloud, YouTube Music, NetEase Cloud Music, and Telegram with the interactive wizard:

    cliamp setup
    

    The wizard guides you through each provider. It writes the provider keys into the section of that provider in your config file (~/.config/cliamp/config.toml, or %APPDATA%\cliamp\config.toml on Windows unless HOME names another directory). It keeps your other keys and comments. It validates supported server connections during setup. The OAuth providers Spotify, Qobuz and Tidal sign in later in the player, and Telegram offers the sign-in right after saving. Mixcloud checks optional browser-session or OAuth credentials when you use them. See docs/cli.md for details.

    See the Mixcloud provider guide for discovery, account, creator/show, genre search, local genre favorites, authentication, signed-in playback, resume, seeking, and limitations.

    For podcast discovery and subscriptions, run cliamp --provider podcast. Browse Apple's top 100 shows and 19 categories, search with / then Enter, and subscribe with f. No account or API key is needed. See the Podcasts guide.

    Remote Control

    Control a running cliamp from a script, a status bar, or a key binding:

    cliamp toggle
    cliamp next
    cliamp status --json
    

    Media keys work through MPRIS on Linux, Now Playing on macOS, and global hotkeys on Windows.

    Run cliamp --daemon to play without a TUI. Headless mode runs the same player as the TUI. It loads your Lua plugins, reports plays to Navidrome, Jellyfin, and the other providers that take play reports, and adds each track to Recently Played when the track starts. See docs/headless.md and docs/remote-control.md.

    Radio

    Press R in the player to browse about 58,000 online radio stations in the Radio Browser directory.

    Cut that down by location or genre: N browses by country, Browse genres & tags opens the directory's complete tag index, and / filters either list. f pins the countries you listen to, and Enter on a country or tag loads its stations as a playlist. cliamp does not work out where you are unless you pick "Use my location" and accept; it then reads your country from the system timezone, never from a geo-IP service. See docs/radio.md.

    Add your own stations to ~/.config/cliamp/radios.toml (or %APPDATA%\cliamp\radios.toml on Windows unless HOME names another directory). See docs/configuration.md.

    To host a radio station, use cliamp-server.

    Building from source

    Prerequisites:

    • Go 1.26.10 or later
    • ALSA development headers (Linux only, required by the audio backend)

    Linux (Debian/Ubuntu):

    sudo apt install libasound2-dev libflac-dev libvorbis-dev libogg-dev libmpg123-dev
    

    Linux (Fedora):

    sudo dnf install alsa-lib-devel flac-devel libvorbis-devel libogg-devel mpg123-devel
    

    Linux (Arch):

    sudo pacman -S alsa-lib flac libvorbis libogg mpg123
    

    macOS:

    brew install flac libvorbis libogg mpg123 pkg-config
    

    Windows source builds: Every Windows source build needs CGO and the MSYS2 MinGW64 toolchain because the Spotify provider is compiled in even when it is not configured. ffmpeg.exe and yt-dlp.exe remain optional runtime dependencies for the same formats and providers as other platforms.

    1. Install MSYS2.

    2. Open the MSYS2 MinGW64 terminal, not the standard MSYS2 terminal. Install the toolchain and codec libraries:

      pacman -S make \
        mingw-w64-x86_64-gcc mingw-w64-x86_64-go mingw-w64-x86_64-pkg-config \
        mingw-w64-x86_64-libogg mingw-w64-x86_64-libvorbis \
        mingw-w64-x86_64-flac mingw-w64-x86_64-mpg123
      

      To check if Go was installed correctly, run

      go env GOROOT
      

      If the command causes the error go: cannot find GOROOT directory: 'go' binary is trimmed and GOROOT is not set, it means that the enviroment GOROOT variable has to be manually set:

      export GOROOT=/mingw64/lib/go
      

      Now, when running go env GOROOT, the output should be: <mtsys2-install-folder>/mingw64/lib/go

    3. In that MinGW64 terminal, build with CGO enabled. This keeps gcc and pkg-config on PATH:

      CGO_ENABLED=1 go build -o cliamp.exe .
      

      Some MSYS2 libogg builds provide libogg-0.dll without ogg_stream_iovecin in its export table. The static libogg.a has this symbol. If linking fails with undefined reference to 'ogg_stream_iovecin', use static linking for this library only:

      CGO_LDFLAGS="-Wl,-Bstatic -logg -Wl,-Bdynamic" CGO_ENABLED=1 go build -o cliamp.exe .
      
    4. cliamp.exe links dynamically to codec and MinGW runtime DLLs. Keep C:\msys64\mingw64\bin on PATH at runtime, or copy each /mingw64/bin/*.dll that ldd cliamp.exe shows next to cliamp.exe.

    Clone and build:

    git clone https://github.com/bjarneo/cliamp.git
    cd cliamp
    make && make install
    

    Or without Make: go build -o cliamp .

    make install places the binary in ~/.local/bin/.

    A source build uses the same optional runtime dependencies as the other install methods. See Install.

    Docs

    Full documentation is hosted at whiterose.org.contextowl.co/docs/cliamp.

    Troubleshooting

    No audio output

    cliamp reports audio output unavailable when it cannot open an output device. On Linux systems that use PipeWire or PulseAudio, the cliamp ALSA backend needs a bridge package to route audio through the sound server:

    • PipeWire: pipewire-alsa
    • PulseAudio: pulseaudio-alsa (libasound2-plugins on Debian/Ubuntu)

    Install the package for your system:

    # PipeWire (Arch)
    sudo pacman -S pipewire-alsa
    
    # PulseAudio (Arch)
    sudo pacman -S pulseaudio-alsa
    
    # Debian/Ubuntu (PipeWire)
    sudo apt install pipewire-alsa
    
    # Debian/Ubuntu (PulseAudio, including WSL2)
    sudo apt install libasound2-plugins
    

    On WSL2 see WSL2 setup for the extra ALSA routing step.

    Author

    x.com/iamdothash

    Disclaimer

    Use this software at your own risk. The authors are not responsible for damage or issues that result from its use.