2013年09月13日

RPi - Raspberry Pi と RasPod でブラウザでコントロール可能なオーディオ・サーバーを構築する

RasPod という名前が想像させるものと言えば・・・そう、林檎マークの音楽プレーヤー。 今日は Raspberry Pi と RasPod を使って Web ブラウザで操作が出来る音楽プレーヤーを作る方法をご紹介しますよ。

RasPod


RasPod の概要と Raspberry Pi セットアップ


RasPod は Python を使って作られた Web アプリケーションで、これを使うとブラウザを使って Raspberry Pi 上にある音楽ファイル( MP3 )を接続したスピーカーから再生出来るようになります。

RasPod overview


音楽好きで使っていないスピーカーがある人にはオススメのプロダクトです。

Raspberry Pi はこちらの記事を参考に Raspbian のインストールと基本設定まで終らせておいて下さいね。

RPi - Raspberry Pi ファースト・インプレッション + 押さえておきたい初期設定


準備が出来たら次のコマンドで Tornado ( Python で記述された Web サーバー)をインストールしましょう。

pi@raspberrypi ~ $ sudo apt-get install python-tornado


続いて VLC パッケージと ALSA ( Advanced Linux Sound Architecture )ユーティリティもインストール。

pi@raspberrypi ~ $ sudo apt-get install vlc alsa-utils


これで RasPod の動作環境は整いました。 GitHub から RasPod をダウンロードしましょう。

pi@raspberrypi ~ $ git clone git://github.com/lionaneesh/RasPod.git


すると RasPod というディレクトリが作られるのでこの下に移動。

pi@raspberrypi ~ $ ls
Desktop  RasPod  ocr_pi.png  python_games

pi@raspberrypi ~ $ cd RasPod/


音楽ファイルは static/Media 配下に置くんですが、今日は先日無料公開されたダフト・パンクのミックス音源を使いましょうか(ええ、僕 Daft Punk 大好き)。

« Daft Punk – Club FG – 03.09.2013


分かり易いようにアーティスト名でサブディレクトリを作って MP3 ファイルをコピー。

pi@raspberrypi ~/RasPod $ mkdir static/Media/DaftPunk


SD カードの容量が少ない人はこの場所に外部ディスクへのリンクを作ってもよし。

さあ、準備が出来たらサーバー・アプリケーション( server.py )を起動しますよ。

pi@raspberrypi ~/RasPod $ python server.py 
Creating Table playlists
Finding media files.
[0x13b0cd0] inhibit interface error: Failed to connect to the D-Bus session 
daemon: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
[0x13b0cd0] main interface error: no suitable interface module
RasPod server is running on por


警告メッセージが表示されるかもしれませんが特に問題は無し。

使用するポート番号(標準で 8888 番ポート)変えたい場合は server.py の引数で別のポート番号を指定して下さいね。


RasPod を使ったミュージック・ライブラリ( MP3 )のスピーカー再生


PC 又はスマートフォンから次の URL にアクセスしてみましょう。

http://RaspberryPiのアドレス:8888/


すると、コントロール・パネルが表示されるはずです。

RasPod web top page


お、先程保存したダフト・パンクの音源もリストされていますね。

RasPod Songs


画面上にあるスライダーはタイムシフト(再生位置の移動)に使います。

RasPod スライダー


その下、画面中央にあるのは再生、一時停止、曲送りボタン。 さらにその下はボリューム。

RasPod play menu


実は僕、最近は音楽を聴かないのでスピーカーは無し。 イヤホンで動作確認させて頂きます。。。

raspberry pi - connect earphone


再生ボタンをクリックすると・・・OK!、ダフト・パンクでテンション上がって来ましたよ!

日本語ファイル名も問題無し、気に入ったらプレイリストも作っちゃいましょう。

RasPod create playlist


残念ながら Resync Songs (新たに配置した MP3 ファイルの読み込み)はうまく動かず。。

もし、途中で新しい音源ファイルを Raspberry Pi に置いたら server.py を再起動しましょう。


RasPod を自動起動・最大音量の調整をしたくなった場合には・・・


え、RasPod が気に入った? じゃあ、もう少し簡単に使えるようにしましょうね。

server.py と同じ場所に起動、停止スクリプトを作ります。

pi@raspberrypi ~/RasPod $ vi raspod.sh


その中身はこんなふうに。

#!/bin/sh

RASPOD_HOME=$(cd $(dirname $0) && pwd)
RASPOD_PID=$RASPOD_HOME/.raspod.pid

if [ -f /etc/profile ]; then
  . /etc/profile
fi

case "$1" in
  'start')
    echo "Starting RasPod server..."    
    python $RASPOD_HOME/server.py > /dev/null 2>&1 &
    echo $! > $RASPOD_PID
  ;;

  'stop')
    if [ -f $RASPOD_PID ]; then
      echo  "Stopping RasPod server..."
      kill -kill `cat $RASPOD_PID`
      if [ $? -eq 0 ]; then
        rm -rf $RASPOD_PID
      fi
    else
      echo "$RASPOD_PID not found."
      exit 1
    fi
  ;;

  'status')
    ps auxw | grep server.py | grep -v grep > /dev/null 2>&1
    if [ $? -eq 0 ]; then
      echo  "RasPod server is running."
      ps auxw | grep server.py | grep -v grep
      exit 0
    else
      echo  "RasPod server is not running."
      exit 1
    fi
  ;;
 
  'restart')
    $RASPOD_HOME/raspod.sh stop
    $RASPOD_HOME/raspod.sh start
  ;;

  *)
    echo "Usage: $0 { start | stop | status | restart }"
    exit 1
  ;;
esac


実行権限も忘れずに設定。

pi@raspberrypi ~/RasPod $ chmod 775 raspod.sh


これで起動、停止、再起動が大夫楽になりますよ。

# start RasPod
pi@raspberrypi ~/RasPod $ sudo ./raspod.sh start

# stop RasPod
pi@raspberrypi ~/RasPod $ sudo ./raspod.sh stop

# restart RasPod
pi@raspberrypi ~/RasPod $ sudo ./raspod.sh restart


自動起動するなら Raspberry Pi が起動する際に最後に実行されるスクリプト、 /etc/rc.local を編集して、

pi@raspberrypi ~ $ sudo vi /etc/rc.local


用意した起動スクリプトを実行する一行を追加しておきましょう。

# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# for raspod
/home/pi/RasPod/raspod.sh start

exit 0


もし、最大音量を上げたいと思ったら( RasPod で調整出来る範囲はあくまで Raspberry Pi 本体に設定されている音量の範囲)、Raspberry Pi に SSH でログインして次のコマンドを実行しましょう。

pi@raspberrypi ~ $ alsamixer


上下キーで本体の音量調整が出来ますよ( Esc キーで保存終了)。

raspberry pi - run alsamixer


じゃあ、僕はお先にパーティしてますね!




より良い、RPi ライフを。

SANWA SUPPLY マルチメディアスピーカー MM-SPL6BK
サンワサプライ (2012-07-31)
売り上げランキング: 12,359


Posted by netbuffalo at 21:59│Comments(2)TrackBack(0)Linux | Raspberry Pi


この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/netbuffalo/4581592
この記事へのコメント
大久保剛史でございます。

更新お疲れ様です。
Posted by 大久保剛史 at 2013年09月14日 08:21
大久保さん、コメントありがとうございました。
Posted by netbuffalo at 2013年09月14日 13:02

コメントする

名前
URL
 
  絵文字