C#でMP3のネットラジオ(SHOUTcast)を再生する
毎日、海外のネットラジオを作業用BGMとして聴いていますが、C# から再生できるかやってみました。理想形としてはサウンドの出力部分以外はP/Invokeを使わずにやりたいと思っていましたが、全く難しくありませんでした。
ここでのネットラジオとは、SHOUTcastで、しかもMP3で配信されているものを前提とします。
使用ライブラリ
- ShoutcastStream Class
SHOUTcastのStream実装。ライセンス:CPOL - Mp3Sharp
C#のみでMP3のデコードを行うライブラリ。ライセンス:GPL - ALSharp
自作。クラスプラットフォームのサウンド再生ライブラリ。ライセンス:LGPL
ALSharp.dll、Mp3sharp.dllをアセンブリ参照に追加、さらにShoutcastStream.csをプロジェクトに追加します。ALSharpはDLLの他に必要なファイルをコピーしておきます(詳しくはライブラリのページで)。
サンプルコード
エラー処理無し。任意のキーで停止します。タイトルの表示に対応。ネットラジオのURLをお好みのものに変更してください。
各行で何をやっているかは詳細に説明しませんが、18行目はMp3SharpでMP3データのヘッダを強制的に読み込ませるために挿入しています。これを行わないとチャネル数などの情報取得に失敗します。
最近はフォーマットがAACやOgg Vorbisになったネットラジオもありますから、Mp3Sharpの部分を差し替えればもちろん動作するはずです。