radiko player を公開してもう1週間。早いものです。
個人的には zaurus で radiko を聴くという需要は少ないと思っていたので、遊び半分で作ったということもあり、思っていたよりも反響があってビックリしました。
ブログなど他の方々意見も参考に、今後開発するなら欲しい機能を挙げてみました。
- エラーメッセージ表示
- 録音&再生
- タイマー録音もできるといいな
- 番組表表示
たぶん、一番需要がありそうな機能は録音&再生だと思います。
実は録音はすごく簡単です。ただ、再生が大変なんです。ファイルリスト、mplayer のコントロール(再生・停止・シークなどの操作) など、一気に処理が増えてしまうので、開発するには気合が必要です。
大変さを無視して個人的にできたらいいなーと思うのが、タイマー録音です。zaurus は電源を切っている状態でも指定時間に起動する機能を持っていますので、それと連動させれば、省エネな radiko 録音サーバにできそうです。番組表表示と組み合わせれば、キーワード検索でおまかせ録音とかもできちゃうかもしれません。回線の帯域さえ間に合えば複数番組録音もできると思います。
と、ちょっと妄想が膨らみましたが、たとえ zaurus で radiko を聞かない人でも省エネ radiko 録音機は欲しい人がいるのではないかと思います。
まぁ、そんな感じでできたらいいなーと思いを綴ってみました。時間とやる気があればそこまでたどり着けるかもしれません。いつもながらまたーり開発なのでいつになることやら・・・。
とりあえず、開発の材料として mplayer の制御について調べてみました。(以下開発メモ)
阿川さん作の Zplayer (mplayerのフロントエンド) や、Zplayer ベースの Quasser Media Player でどうやって mplayer をコントロールしているのか調べてみました。
初めはキー操作をエミュレートしてるのかなと思っていたんですが、mplayer には slave モードという、標準入力からコマンドを受け付けるモードがあるらしいです。
mplayer -slave ファイル名
で、"pause" や "seek 5 2" などのコマンドを標準入力に入れると、mplayer が再生停止やシークを行います。
また、標準入力以外のファイルからもコマンドを入力することができます。
mplayer -input file=XXXX ファイル名
上記の場合、XXXXというファイルからコマンドを入力します。この XXXX に FIFO ファイルを指定することで、フロントエンドからFIFO経由でコマンドを送ることができます。これは便利ですね。
また、制御だけでなく、情報の取得もできます。"get_time_pos" というコマンドを実行すると、標準出力に現在の再生位置(秒数)を出力します。他にも曲の長さ等も取得できるので、これをフロントエンドで拾えば画面表示に必要な情報は取得できるようです。
情報取得系は標準出力に結果を出力するので、-quiet オプションも追加して、余計な出力を抑制すると出力のパースが楽になりそうです。
また、録音した flv ファイルを mplayer で再生させるとシークができないようです。
Ubuntu 10.10 の mplayer 1.0rc4-4.4.5 でも同様なので、きっとまだ対応していないのでしょう。再生機能を実装するには必須な機能なので、デバッグしないといけないかなー。