鳥頭

Nixでmpvを入れてCDを再生する

に投稿

nixpkgsからmpvをインストールして、CDを再生しようとすると以下のようなエラーが出る。

$ mpv cdda://
No protocol handler found to open URL cdda://
The protocol is either unsupported, or was disabled at compile-time.
Exiting... (Errors when loading file)

原因

cddaプロトコルが使えるような形でビルドされていないことが原因
具体的にはmesonを使ってmpvをビルドするときに、cddaオプションを有効にしていないからです。

対処方法

こちらのPRcddaSupportというフラグが追加され、 これをtrueにしてビルドすることで、mpvでCDを再生できるようになります。

{ pkgs, ... }: {
  environment.systemPackages = with pkgs; [
    mpv-unwrapped.override {
      cddaSupport = true;
    }
  ];
}

なんでデフォルトでfalseにしてるのかよく分からない…(Nixのポリシーとかが関わってるのかな?)

余談

CDの回転速度を制御する

--cdda-speed=nというオプションがあり、 これに1〜100までの数値を渡すことでCDの回転速度を制御できるようになります。

私が使用しているCDドライブはそんなにいいものではなく、 回転速度を最大にするとちょっと耳障りになるため、 --cdda-speed=10をつけて10倍速程度にしてあげると静かでちょうどいい感じになる。

デフォルトでcddaSupportをtrueにしないの?

mpv: enable cddaSupport on most platformsというPRにて、 Darwin以外でデフォルトで有効化しようぜ!みたいなPRが立てられているが放置されている。

(👍️して持ち上げよう)