radiko player に関するメモ

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 でも同様なので、きっとまだ対応していないのでしょう。再生機能を実装するには必須な機能なので、デバッグしないといけないかなー。

zaurus 用 radiko player 完成!

お待たせしました。radiko player のフロントエンドができました。→ダウンロードページ

といってもかなり簡易的でとりあえず動くレベルです。いつものことながら少しずつ改良しようと思います。

インストールすると、 以下のようなアイコンが追加されます。


radiko player のアイコン

今風に iPhone 風アイコンにしてみました (^^;

アイコンの見た目とは違い、アプリ画面は寂しすぎるくらいシンプルです。


radiko player アプリ画面

コンボボックスでチャンネルを選択し、「Play」ボタンを押すと再生するという、迷いようのない、こだわり抜いたシンプルなインターフェースが特徴です。(ウソですあっかんべー)

再生させてみると分かりますが、mplayer のバッファリングに結構時間がかかるので、「play」を押してから実際に音が出るのは7~8秒くらいかかります。

押してからちょっと不安になるころに鳴り始めますので、心にゆとりを持ってご利用ください。

rtmpdump は結構早い段階でデータを出しはじめるようですが、mplayer がある程度バッファリングするまで再生を開始しないようです。mplayer の初期バッファリングサイズを調整できないか調べてみようと思います。

また、今回リリースした radiko フロントエンドですが、今は放送局IDなどはハードコーディングしてしまっているので、今後 radiko の仕様が変わったときのために、rtmpdump の引数や放送局IDは設定変更できるようにしよう思ってます。 

 

前回のブログのコメントで kanon さんとブースカさんから動作報告を頂き、SL-C700/860/1000/3200 の動作実績ができました。ありがとうこざいました。

さらにブースカさんが mplayer の性能評価を行ってくださいまして、その結果、SL-C700 の normal kernel でも十分実用できるレベルで動作することが分かりました。

これらの結果から、おそらく SL-C シリーズであれば(たぶん SL-6000も)どの機種でも Normal kernel / special kernel 問わず、実用レベルで使用可能と思います。

興味本位で始めた radiko 対応ですが、興味が薄れる前にある程度形になってよかったです (^^;

もう少し作業はありますが、こういう短い単発ネタで一気に作るのは面白いですね。
飽きっぽい正確なので、こういうスタイルの方が性に合ってるのかもしれません (^^;

radiko player

概要

ラジオをインターネット経由でサイマル放送をしている radiko.jp を zaurus で聴くためのプレイヤーです。

2011/3から radiko.jp のストリーミング方式が変わり、radikoを聞けなくなりました。

変わりに NHK の「らじる★らじる」を聞くことができます。

また、阿川さんの mplayer をインストールしていれば、設定ファイルを置き換えるだけで「サイマルラジオ」も聞くことができます。

ファイル

らじるらじるのストリームデータをダウンロードする rtmpdump と、プレーヤーの mplayer も同梱されていますので、この ipk をインストールするだけでらじるらじるを聴くことができます。

また、阿川さんのmplayerをインストールして、上記 radiko-chlist.txt を /home/zaurus/Settings/radiko-chlist.txt に上書きコピーすればサイマルラジオ 83 局も聞くことができるようになります。

使い方は 2010/11/11 のブログを参照ください。

履歴

  • 0.2.1 (11/09/16) – ipk src
    NHK第一しか聴けないバグを修正
  • 0.2.0 (11/09/14) – ipk src
    NHKのらじるらじるに対応。
    サイマルラジオに対応。
    GUIは純粋に外部コマンドを実行するだけにし、設定ファイルで実行コマンドを変更できるようにした。
  • 0.1.0 (10/11/11) – ipk src
    フロントエンド込みで初リリース
  • v101107 (10/11/07)
    mplayer を少し最適化し、デコード性能を向上させた。
    まだフロントエンドなし。
  • v101103 (10/11/03)
    rtmpdump と mplayer の両方が完成。
    コマンドラインから実行すればとりあえず聴けるようになった。

zaurus で radiko を聴く!その2

さてさて、DB の故障などちょっとゴタゴタしてましたが、radiko 関係の作業を再開し、新しい radiko-kit を作りました。

変更点は以下です。

  • mplayer のサイズを小さくした
  • mplayer がスペカ無しでも実用的な速度で動作できるようになった
  • radiko.sh を同梱

まず、前回の mplayer が 6.5MB とあまりにもサイズが大きかったので、ちょっとダイエットしました。

前回の時点でも不要なデコーダを全部切ったつもりだったんですが、まだまだ大量に残っていたようで、不要なデコーダをガンガン消したら1.4MB台になりました笑顔

まだまだ不要な処理はたくさんあるんですが、ひとまずこれくらいにしておきます。

2つ目は、mplayer の高速化です。プロファイラにかけて重そうな処理を探したところ、ループ内で浮動小数演算を使っていたので、整数化してみました。そうしたらスペカ無しでも実用的な速度で再生できるようになったようです。

3つ目は radiko 再生用のスクリプトを同梱しました。引数に放送局IDを指定すると再生できます。

$ ./radiko.sh TBS 

放送局IDは以下のようです。

関東地区

  • TBS – TBSラジオ
  • QRR – 文化放送
  • LFR – ニッポン放送
  • NSB – ラジオNIKKEI
  • INT – INTER FM
  • FMT -TOKYO FM
  • FMJ – J-WAVE

関西地区

  • ABC – ABC ラジオ
  • MBS – MBS ラジオ
  • OBC – ラジオ大阪
  • CCL – FM COCOLO
  • 802 – FM80.2
  • FMO – FM OSAKA

あとはフロントエンドですね。もう少しお待ちください。

サーバアップデート完了

サーバのアップデートが完了しました。

debian etch(4.0) から Ubuntu 8.04 LTS へシステム総入れ替えを行いました。

メールサーバや SVN リポジトリなど、個人的に使っているサービスはまだ完全に復帰してませんが、Web サーバ + CMS は復帰できました。

これを機に drupal5 から drupal6 へ移行しようとしたのですが、テーマにも修正が必要らしく、ちょっと修正するには時間がかかりそうなので、drupal 5 のままです。

drupal 7 がそろそろ正式リリースされそうなこのご時世に、まだまだ drupal 5 で頑張ります。いっそのこと drupal 7 へ移行しちゃおうかな。

うーん眠い・・・。もう寝よう。