Raspberry PiでYouTubeを再生してみたよ。
Node.jsを利用して喋れるようになったRaspberry Piですが、機能を追加してYouTubeを再生出来るようにしてみました。
合成音声の発話で試したのと同様にNPM(ノード・パッケージ・マネージャー)を利用します。
パッケージを利用することでプログラムの記述は必要最低限(それも主にドキュメントを記述するだけ)で実装出来ました。方法を紹介します。
Raspberry Piの動画再生
最初は、Chromium(Chromeの開発版)を入れて、それで再生すれば良いかな。などと思っていたのですがスムーズな再生は出来ませんでした。
Raspberry Piで動画再生をするのはブラウザを使わずにパッケージソフトomxplayerを利用して再生するのが良いと思われます。
Macで例えるなら、動画再生をブラウザのChromeなどで再生せずに同梱アプリのQuick Time Playerを使って再生するようなものですね。
youtube-dl
linux系のコマンドラインツールでYoutubeダウンローダーと言えば youtube-dl というツールが広く利用されています。これはPythonという言語で書かれています。
このコマンドラインツールをJavaScriptで実行してくれるパッケージソフトがこの youtube-dl (npm版) です。
任意のディレクトリにインストールします。
| 
 | 
 | 
YouTubeをダウンロードするドキュメントはこのように書かれています。
| 
 | 
 | 
YouTubeのアドレスを指定してダウンロードします。
その後Node.jsの fs メソッドを利用して任意の場所に保存することが可能になります。
node-omxplayer
Raspberry Piで動画再生する場合、コマンドラインツールのomxplayer を利用するのが一般的です。
処理速度も速くフルHD動画もスムーズに再生が出来る様です。
npmで検索するとこのomxplayer をJavaScriptでコントロール出来るパッケージが公開されていました。
インストールから。
| 
 | 
 | 
ドキュメントはシンプルです。
| 
 | 
 | 
モジュールを読み込んで、ファイルを指定するだけで再生されます。
やってみる

モジュールと同じ階層に pontube.js というファイルを作りこんな風に記述しました。
| 
 | 
 | 
Raspberry Piからはこんな実行コマンド一発でダウンロード後に再生されます。
| 
 | 
 | 
試しにYouTubeより「 Every Samuel L. Jackson “Motherf*cker”…Ever - YouTube 」
のアドレスを入力し、Raspberry PiをHDMI接続で居間のテレビにつないでみました。
SSHでNode.jsの実行コマンドを入力。

無事再生されました。
USBスピーカーを使う
このomxplayerを利用すれば動画関連はほぼいけそうなのですが、残念な事に出力先がHDMIか3.5mmプラグにしか対応していません。
USBスピーカーから出力出来ないか調べてみました。
simple-mplayer
omxplayerと同様にコマンドラインから動画を再生できる MPlayer というlinux系パッケージソフトがあります。
検索で調べたところ、Raspberry PiでMPlayerを利用して動画再生すると動画にカクつきがあるようで動画再生はomxplayerをするのが良さそうです。
しかしながら、このMPlayer はUSBスピーカー出力に対応しているので、音声再生だけならどうだろうかと思い試してみました。
NPMよりJavaScript用のパッケージが複数公開されています。一番シンプルなものを選んでインストールしてみました。
| 
 | 
 | 
ドキュメントはシンプルです。
| 
 | 
 | 
パッケージを読み込み、ファイルを指定して再生させることが出来ます。
やってみる

先程と同様に配置します。JavaScriptも同様に記述します。
| 
 | 
 | 
実行コマンド。
| 
 | 
 | 
ダウンロード後、再生されます。
敬愛するサミュエル・L・ジャクソンのキレのある「Mother F*cker」をRaspberry Piで聞くことが出来ました。
まとめ
検索プログラムと上手く組み合わせれば検索から再生も可能です。Raspberry Piらしく音声で検索出来るといいなと思います。
楽しみはつきませんが、ではまた。
