RaspberryPi専用の動画再生ソフト omxplayer。
言わずと知れたその性能は凄まじい。RaspberryPi搭載のGPUを余すことなく使ってスムーズに動画を再生してくれる。
例えば gakki2.mp4 という動画を再生するには、sshして以下のコマンドを打つだけ。
$ omxplayer gakki2.mp4
RaspberryPi の HDMI につないだテレビで、即座に動画再生される。
300円でMPEGキーを買えばハイビジョンも激速再生可能。
そんな omxplayer での、動画再生の停止は Ctrl + C
動画停止する。
動画の一時停止は p
一時停止するが
もう一度 p を押せば再生を開始する。
キー割り付け(Key binding)は公開されている。
この一連の流れをキーボードからではなくてプログラムからやりたい。プロセスにコマンドを送ることで、一時停止したり再開したりしたい。長年望んでいてなかなか実現できずにいたのだが、fifoという機能を使えば実現できるらしい。素晴らしい記事があった。
記事のとおりやってみる。
まずは fifo ストリームを作る。
$ mkfifo /tmp/omx-input
mkfifo は「make first in first out device」くらいの意味だろう。
平たく言えば /tmp の下に一時的な入力デバイス(omx-input)を作ってるだけ。その入れ物の性質が fifo(first in first out)なものだと思っておけばよさそう。
次に、この fifoデバイスに動画ストリームを繋ぐ。omxplayer が fifo からの入力を読み込むようにする。平たく言えば、omxplayerがキーボードの代わりに /tmp/omx-input からの入力を受け付けるようにする。標準入力を使う。
$ omxplayer gakki2.mp4 < /tmp/omx-input &
input のあとに & をつけたのはバックグラウンド実行にするため。
あとはコマンドを送り込むだけ。
$ echo -ne p > /tmp/omx-input
再生した!
すごい。キーボードで「p」を押したのと同じ状態を作り出せる。例えば php や python から shell を呼んで「echo -ne p > /tmp/omx-input」すればomxplayerを遠隔操作できるということ。
キーバインド 「2」を送り込めば倍速再生になる。
$ echo -ne 2 > /tmp/omx-input
すごい。コレすごい。動画再生アプリすぐ作れる。とりあえず次記事ではphp実装してみる。
※ こんなすごい記事もあった。phpでfifoを作れるらしい。
※ omxplayer を python から制御する方法もあるようだ。いずれ試す。