LinuxでRadikoを聴く方法 ― mpv / Celluloid + Streamlink + Luaスクリプトで快適ラジオ環境を構築する

はじめに

LinuxデスクトップでRadiko(ラジコ)を聴きたい。

しかし、RadikoにはLinux向けの公式プレイヤーは提供されていません。

ブラウザで聴く方法もありますが、常時起動しているブラウザはリソースを消費します。また、作業中に「軽量な専用ラジオプレイヤー」として使いたい場合には少し不便です。

そこで今回は、Linuxで広く利用されているメディアプレイヤー mpv と、mpvのGUIフロントエンドである Celluloid、さらにストリーム取得ツール Streamlink を組み合わせて、Radikoを再生する環境を構築します。

完成すると以下のような構成になります。

Radiko URL
    ↓
mpv / Celluloid
    ↓
mpv Lua Script
    ↓
Streamlink
    ↓
ffmpeg
    ↓
AACストリーム再生

mpv単体ではRadikoのURLを直接再生できませんが、LuaスクリプトによってStreamlinkへ処理を渡すことで、自動的にストリームへ変換できます。


動作環境

今回の環境:

項目 内容
OS Linux Mint Cinnamon
Player mpv
GUI Player Celluloid
Stream取得 Streamlink
Codec処理 ffmpeg
Script Lua

必要なツール:

  • mpv
  • Celluloid
  • Streamlink
  • ffmpeg
  • curl
  • jq
  • openssl

必要パッケージのインストール

Debian / Ubuntu系の場合:

sudo apt install mpv celluloid ffmpeg curl jq openssl

Streamlinkをインストールします。

sudo apt install streamlink

インストール確認:

mpv --version

streamlink --version

例:

streamlink 8.5.0

Streamlink単体でRadikoを確認する

まず、StreamlinkがRadikoを取得できるか確認します。

例としてTBSラジオ:

streamlink \
--stream-url \
https://radiko.jp/live/TBS \
best

成功すると、以下のようなHLS URLが表示されます。

https://alliance-stream-radiko.smartstream.ne.jp/...

このURLが取得できれば、Radiko側のストリーム取得は成功です。


mpv用Luaスクリプトを作成する

mpvにはLuaによる拡張機能があります。

今回は、

「Radiko URLを開いた場合だけStreamlinkへ渡す」

という処理を追加します。

スクリプト配置場所:

~/.config/mpv/scripts/

作成:

mkdir -p ~/.config/mpv/scripts

ファイル:

~/.config/mpv/scripts/radiko.lua

内容:

local utils=require 'mp.utils'

mp.add_hook("on_load",10,function()

    local url=mp.get_property("stream-open-filename")

    if url and url:match("^https://radiko%.jp") then

        mp.msg.info("Radiko detected: "..url)

        local res=utils.subprocess({
            args={
                "streamlink",
                "--stream-url",
                url,
                "best"
            }
        })

        if res.status==0 then

            mp.msg.info(
                "Streamlink URL: "..res.stdout
            )

            mp.set_property(
                "stream-open-filename",
                res.stdout:gsub("%s+$","")
            )

        end
    end

end)

Radikoプレイリストを作成する

複数局を切り替えられるように、m3uプレイリストを作成します。

例:

radiko.m3u

内容:

#EXTM3U

#EXTINF:-1,TBSラジオ
https://radiko.jp/live/TBS

#EXTINF:-1,文化放送
https://radiko.jp/live/QRR

#EXTINF:-1,ニッポン放送
https://radiko.jp/live/LFR

#EXTINF:-1,TOKYO FM
https://radiko.jp/live/FMT

#EXTINF:-1,J-WAVE
https://radiko.jp/live/FMJ

mpvで再生する

まずCLI版で確認します。

mpv radiko.m3u

成功するとログに:

[radiko] Radiko detected:
[radiko] Streamlink URL:
https://alliance-stream-radiko...

と表示されます。

音声情報:

Audio --aid=1
(aac 2ch 48000Hz)

となれば成功です。


CelluloidでGUI再生する

ここからが少しLinuxらしいポイントです。

CelluloidはmpvのGUIフロントエンドですが、環境によってはmpvとは別の設定ディレクトリを利用します。

mpvでは動くのに、Celluloidでは動かない場合があります。

確認:

find ~/.config -name "scripts"

例:

~/.config/mpv/scripts
~/.config/celluloid/scripts

この場合、Celluloid側にもLuaスクリプトを配置します。

mkdir -p ~/.config/celluloid/scripts

cp ~/.config/mpv/scripts/radiko.lua \
~/.config/celluloid/scripts/

確認:

ls ~/.config/celluloid/scripts

結果:

radiko.lua

Celluloidで再生

起動:

celluloid radiko.m3u

またはGUIから radiko.m3u を開きます。

正常なら:

[radiko] Radiko detected
[radiko] Streamlink URL:

が表示され、GUIプレイヤー上でRadikoを聴けます。


トラブルシューティング

mpvでは動くがCelluloidでは動かない

症状:

HTTP error 404
Failed to open

原因:

Celluloid側でLuaスクリプトが読み込まれていない。

確認:

celluloid \
--mpv-msg-level=script=debug \
radiko.m3u

ログに:

[radiko]

が無ければscript未ロードです。


mime typeエラーについて

以下のような表示:

mime type is not rfc8216 compliant

が出る場合があります。

これはRadikoのHLSプレイリスト形式によるもので、今回の環境では再生には影響ありませんでした。

AAC音声が取得できていれば問題ありません。


まとめ

今回は、

  • mpv
  • Celluloid
  • Streamlink
  • Lua Script
  • ffmpeg

を組み合わせてLinux上にRadiko再生環境を構築しました。

mpvは単なる動画プレイヤーではなく、Luaスクリプトや外部ツールとの連携によって、様々な用途へ拡張できます。

また、Celluloidを利用することで、コマンドライン操作が苦手なユーザーでもGUIプレイヤーとして利用できます。

Linuxでは「公式アプリがないから使えない」ではなく、既存ツールを組み合わせることで自分好みの環境を構築できるのが大きな魅力です。


使用技術

  • Linux
  • mpv
  • Celluloid
  • Streamlink
  • ffmpeg
  • Lua
  • HLS
  • AAC
  • Radiko

コメント

タイトルとURLをコピーしました
~