Raspberry Pi Radiko Player(simple)

当サイトのRadiko Playerですが気が向いた時に適当に機能を追加していることもあって使い勝手が悪くなってきました。ここで一旦シンプルなRadiko Playerとして見直してみることにしました。

今回はディスクトップのPi3(jessie)にインストールしてみます。
サウンドデバイスも内蔵の(bcm2835 ALSA)を使用。
Piの設定からAudio Device Settingsで設定できます。
インストール
radiko関連

# apt install mplayer swftools libxml2-utils libav-tools rtmpdump

コマンドラインからradikoスクリプトを実行して正常に聴取できることを確認
/var/tmp/player.swf is not a valid SWF file or contains errors.
[stop] failed get keydata (/var/tmp/authkey.png)
こんなエラーが出る時はradikoの仕様変更に対策済みのスクリプトかまたは
$ rm /var/tmp/player.swfを実行
1分で停止する時は
$ /path/to/radiko.sh -t 120 -p *** とかして連続再生を確認
スクリプトは/var/www/htmlへ
web server

# apt install lighttpd php5-cgi
# lighty-enable-mod cgi
# lighty-enable-mod userdir
/etc/lighttpd/conf-available/10-cgi.conf
cgi.assign      = (
    ".pl"  => "/usr/bin/perl",
    ".py"  => "/usr/bin/python",
    ".php" => "/usr/bin/php-cgi",
)
# gpasswd -a www-data audio

SkyBlue CSS Framework
https://github.com/Stanko/skyblue/archive/gh-pages.zipをダウンロード、展開して/var/www/htmlにおきます。
Radiko Playerのindex.phpも/var/www/htmlに配置します。
以上で再起動します。

Radiko Playerの実行

http://localhost/


シンプルといってもラジオだけで今までと何も変わらないのですが今回は音量値を取得、表示してみました。
音量のデフォルト設定ボタンに現在の値を表示しています。ボタンの機能はそのままなのでこのボタンを押すことによってデフォルト値を設定、表示します。
音量値は以下のコマンドから取得しています。

$ amixer -R
Simple mixer control 'PCM',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback -10239 - 400
  Mono: Playback -1312 [84%] [-13.12dB] [on]

音量値は-10239〜400の10640ステップあります。
現在の音量値は84%を表示しています。
“R”オプションはデフォルトですがもうひとつ”M”オプションがあります。

$ amixer -M
Simple mixer control 'PCM',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback -10239 - 400
  Mono: Playback -1312 [52%] [-13.12dB] [on]

“M”オプションで表示すると実際の値は同じですが%表示[52%]が違っています。
こちらは人の聴感に合わせたような表示ですね。最終的には同じ100%になります。
各音量ボタンを押すとケース文を実行後ここに飛びます。

// goto vol
        vol:
            $vol = shell_exec("amixer -c 0 -R 2>&1");
            $vol_a = explode(' ',$vol,30);
            $vol_s = $vol_a[29];
            $vol_x = substr($vol_s,1,3);
            $vol_y = str_replace('%', '', $vol_x);
            $volume = str_replace(']', '', $vol_y);
            $_SESSION['volume']=$volume;
            $select = 'station';
        break;

無駄に行がある感じですが”R”オプションのコマンドから数値のみを取り出しています。
この”R”を”M”に変更するとによって”M”オプションの表示になります。
またOS起動後はこの値は空になっているので空の時のみ同じく読み取るよう先頭に別に記載しています。

テキストエリア

テキストエリアはある程度自由に記載、使い分けできるようにしてみました。

大きいボタンはTOKYO FMを仮に割り当てています。
大きいボタンを押すとphpのcase “default”を実行し末尾の変数$selectに’default’を入れます。
htmlに戻ってくるとphpのswitch文$selectのcase defaultの項を実行します。

 php
case "default";
exec("nohup killall mplayer > /dev/null 2>&1");
exec("nohup /bin/bash radiko.sh -p FMT > /dev/null &");
$_SESSION['broad']= "TOKYO FM";
$select = 'default';

html
/*
Display
}*/
switch ($select) {
case "default";
    print_r($radiko);
    print_r(PHP_EOL); print_r(PHP_EOL);
    print_r('Have a nice day');
break;

参考 index.php.pi.sample1
USBスピーカーなどを使っている場合は
amixer -c 0 –> amixer -c 1に変更する必要があります。
radikoスクリプト内も同様です。

これでベースの部分がある程度整理がついたので次回はまたCDプレーヤーを組み込んでみたいと思います。