インターネットラジオのメタデータ(曲のタイトル等)を表示するコマンドラインプログラムを作りたい

投稿者: Anonymous やりたいこと: インターネットラジオ局「Digitally Imported」が提供するオーディオストリーミングに含まれているはずのメタデータ(曲名等)を表示するコマンドラインプログラムを作りたいです。 現在VLCを使ってこのラジオを聴いていますが、唯一の不満としてこのメタデータを保存できないという点があるためです。そのためラジオの試聴中に自動的に曲のデータを収集し、標準出力に出して、それを好きなように別のコマンドでフィルタしたり、リダイレクトできたらと思いました。 視聴しながらメタデータを取得できるのが最高ですが、メタデータのみを取得する方法でも構わないと考えています。 プログラミング言語としてはC/C++, rubyが使えます。シェルスクリプトも分かる方になってきたと思います。Linuxのシステムコールに詳しくないため、できればC系の実装は避けたい気持ちはあります。 現状: 環境はubuntu 15.04です。 一番手軽なのは、すでにあるコマンドラインツールで、この種のメタデータを取得できる機能を持つものを利用することであると考えましたので、cvlcを使って試しました。しかしそのようなオプションが用意されているようには理解できず、コマンドラインでのVLCは諦めました。 次にVLCのAPIがあることをウィキペディアで見つけたため、それを検討してみました。 しかしながら私にはオーディオストリーミングについてほとんど知識がなく、D-Busも「それ何?」というレベルでして、正直どこから手を付けていいのか分かりませんでした。 他のコマンドラインツールも数種類(cmus, pyradio)試しましたが、それらはターミナル上でGUI的な操作を提供するのが目的で、オプションも目的に適さなかったため、今のところ上手く探せておりません。 こういう状態なので、全部まるごと教えてくれとはいいません。取っ掛かりのヒントで良いので教えてください。よろしくお願いします。 解決 こちらの環境は Ubuntu 15.10 です。また、VLC ではなく mplayer を使っています。 例えば、JAZZRADIO.com のストリーミング放送では SHOUTcast プロトコルのメタデータ形式を使用しています。 SHOUTcast SHOUTcast’s streaming protocol uses metadata tags and responses that all start with ICY, which stands for “I Can Yell.” なので、mplayer を使うと以下の様にしてタイトルやアーティスト名を取得できます。 $ mplayer -playlist…(Continue Reading)

MonacaならばAndroidで動画を自動再生させる事が出来るか

投稿者: Anonymous HTML5およびJavaScriptによるWebsiteを持っています。 Androidで動作する、ビデオやオーディオを使ったアプリを作りたいです。 AndroidのChromeではvideoタグやaudioタグでオートプレイを(autoplay属性などで)行うことが出来ません。従量課金の懸念による制限のため、オートプレイが不可能な現状です。 Monacaでは可能なようですので、アプリ化しても動作可能であれば登録したいのです。 monacaの中のプライベートアプリとしては、サーバーへリンクを飛ばし、それをオート再生することができます。 AndroidのChromeではできないオートプレイを実行する手段はありますか? ストレージに配置するHTMLファイルに、ダウンロードを伴うサーバーへのリンクをはることは可能ですか? アイコンの作成は可能ですか? 登録に際し、$25以外に何か必要ですか。 xmlファイルの編集は必要ですか? 来月本を買って学ぶつもりですが、事前に知りたいのです。なにとぞよろしくお願い申し上げます。 解決 動画等の自動再生に関して Cordova・Monacaではvideo要素等の自動再生が可能です。 video要素にautoplay属性を付けておけば、アプリケーションの起動時に自動で再生が始まります。 ただしアプリケーションの切り替えなどで再生が止まります。 再びアクティブになった時に再生を再開したいのなら、pauseやresumeなどのイベントを補足し適切に処理する必要があります。 回答者: Anonymous

Naudio.dllによるリソースアクセスエラー検出方式が知りたい

投稿者: Anonymous Naudio.dllを使用して、ストリーミングでlan接続先の端末共有フォルダに置いてある音声ファイルを再生しています。 play()メソッドを呼んだ時(音声ファイル再生中)にlanケーブルを抜くと、アプリが応答なしで固まってしまいます。 再生中に音声ファイルへのアクセスが出来なくなったことを検知する方法はありますでしょうか。 ・Naudio https://github.com/naudio/NAudio 解決 いずれも、@774RRさんコメントのように、タイムリに通知されるかどうか疑問がありますが、以下のような通知や監視方法が考えられます。 NAudio.dll自身で言えば、waveOut.Play()メソッドでPlaybackStoppedイベントが通知される可能性が考えられます。要因はe.Exceptionプロパティに入るでしょう。 あるいはAudioFileReaderのreadメソッドでExceptionが発生する可能性が考えられます。 再生の停止 – NAudio | C# プログラミング解説 再生の停止 Stop()で停止を指示できます。ただし直ちに停止するわけではなく、PlaybackStoppedイベントの発生までは停止していません。 private void Method() { if (waveOut.PlaybackState != PlaybackState.Stopped) { EventHandler<StoppedEventArgs> handler = null; handler = delegate { waveOut.PlaybackStopped -= handler; Method(); // ここで停止を確認してから、再帰的に呼び出す }; waveOut.PlaybackStopped += handler; waveOut.Stop(); // 停止を指示。まだ停止していない return; } // ここでは停止している } 他に…(Continue Reading)