(2022-01-22 初稿 - )
はじめに
先日、Raspberry PiをBGMサーバにする記事をアップした。
BGMサーバとしても、とても役立つラズパイだけど、ついでにラジオも流してもらうことにした。
この記事では、ラズパイでNHKのラジオ、地域のコミュニティFM、Shoutcastのネットワーク上のラジオ局を聞く方法を記述する。
ちなみに、下の写真は、Raspberry Piに、ダイソーのBluetoothスピーカーをペアリングしてラジオを流しているところ。とても可愛らしいスピーカーだったので、ついつい買ってしまった。^^;
Raspberry Piには、ディスプレイ、キーボード、マウスを付けたくないので、原則操作はリモートPC(Debian)から行う。Raspberry PiにSSH接続ができれば、どんなOSでもできるよ。
準備
まずは、Raspberry Piにvlcをインストール。mplayerも試したけど、vlcの方がラジオの受信が安定してた。
sudo apt install vlc
HDMI、アナログ、Bluetoothなんでもいいから、Raspberry Piのvlcから音が出るように設定。
また、Raspberry PiにはロカールPCからSSHで接続できるように設定をしておく。
わからなければ、以下を参照して。
面倒なのは各放送局のストリームURLを調べないといけないけど、筆者は以下のサイトを参照して調べた。
【NHK】
【地域コミュニティ】
ShoutCastのストリームURLの取得は、下のスクリーンショットを参考に取得する。
- 聞きたいStationのダウンロードマークをクリック
- Any player (.m3u) を右クリック
- リンクのアドレスをコピー
- テキストエディタ等に貼り付け
ラジオを聞く
まずは、Raspberry Piで聞く方法。
$ cvlc http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1760430 $ cvlc http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1760430 & #バックグランド実行
vlcコマンドだとGUIのVLCが起動してしまうので、ディスプレイがついてないラズパイではcvlcが便利。しばらくして、音楽が聞こえてきたら成功。簡単だね。
スクリプトの作成
1局だけ聞くのは簡単だけど、聞きたい局を変更したり、リモートのRaspberry Piに接続に行くのがいちいち面倒。
そこで、筆者お得意の超ローテクのbashスクリプトを作った。
$ cat lradi #/bin/bash # Listen Radio Program # ver 0.01 2022-01-20 started # ver 0.02 2022-01-21 list配列変更 # Global Variable # Station List ','で区切って列記 st_list=( "NHK-FM,https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8" "NHK-R1,https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8" "NHK-R2,https://nhkradioakr2-i.akamaihd.net/hls/live/511929/1-r2/1-r2-01.m3u8" "G-SKY,http://musicbird-hls.leanstream.co/musicbird/JCB036.stream/playlist.m3u8" "FM-HARO,http://musicbird-hls.leanstream.co/musicbird/JCB034.stream/playlist.m3u8" "America's_Best_Ballad,http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1760430" "Bay_Smooth_Jaz,http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1852944" "ADULT_CONTEMPORARY,http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1592967" ) USAGE=" lradi Ver0.02 Listen Radio Program [Usage] lradi -h Display Usage and Exit lradi -l List : Display Radio Station Number lradi n n=Radio Station Number lradi -q Quit lradi lradi -s -s Servername lradi -u -u Remote Uername" #echo ${st_list[0]} ${st_list[0]%%,h*} ${st_list[0]#*,} st_name=() st_url=() USR="pi" # Default User SERVER="" qflag=0 # function usage_exit() { echo "$USAGE" exit 1 } prn_slist() { local n=0 for i in ${st_name[@]}; do echo $n ":" "${i}" n=$((n+1)) done exit 0 } sl="" for sl in ${st_list[@]}; do IFS=, st=(${sl}) #echo "[name]"${st[0]} ":" "[URL]"${st[1]} st_name+=(${st[0]}) st_url+=(${st[1]}) done while getopts :lhqs:u: OPT do case $OPT in l) prn_slist ;; h) usage_exit ;; q) qflag=1 ;; s) SERVER=$OPTARG ;; u) USR=$OPTARG ;; \?) usage_exit ;; esac done shift $((OPTIND - 1)) snum="$1" if [ $SERVER ]; then #echo "SERVER="$SERVER "USER="$USR if [ $qflag -ne 0 ]; then ssh $USR@$SERVER killall vlc exit fi rt="" rt=$(ssh $USR@$SERVER /usr/bin/pgrep vlc) if [ $rt ]; then echo "change Station" ssh $USR@$SERVER killall vlc fi echo listening... ${st_name[$snum]} ssh $USR@$SERVER PULSE_SERVER=localhost cvlc \ ${st_url[$snum]} > /dev/null 2>&1 & sleep 3 #echo $! # クライアント側プロセスを消してOK kill $! #直前のバックグランドjobのプロセスID else #echo ${st_url[$snum]} if [ $qflag -ne 0 ]; then killall vlc exit fi rt=$(pgrep vlc) if [ $rt ]; then killall vlc fi echo listening... ${st_name[$snum]} cvlc ${st_url[$snum]} > /dev/null 2>&1 & fi exit 0
エディタに貼って、以下のとおり実行権を付与。
chmod +x lradi
使い方
$ lradi -u Username -s Server 聞きたいラジオ局 $ lradi -l (このスクリプトに入っているラジオ局は以下のとおり。) 0 : NHK-FM 1 : NHK-R1 2 : NHK-R2 3 : G-SKY 4 : FM-HARO 5 : America's_Best_Ballad 6 : Bay_Smooth_Jaz 7 : ADULT_CONTEMPORARY 自分で好きな局を見つけて加えてね。 $ lradi -u Username -s Server 聞きたいラジオ局(ラジオ局の変更) $ lradi -u Username -s Server -q (終了)
なお、Usernameはデフォルトでpi、Serverをつけれければ、ローカルPCでvlcが起動する。
おわりに
新型コロナのオミクス株が猛威を奮っている今日この頃、ラジオでも聞いてのんびり過ごしましょう。
この記事では、ラジコ(radiko)で放送されている放送にもチャレンジしたが、うまく聞くことができなかった。(-_-;)
何か情報を持っている方は、教えてください。m(__)m