はじめに
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


コメント