DOBON.NET DOBON.NETプログラミング掲示板過去ログ

実行ファイルに埋め込んだ音楽データの読み出し方法

環境/言語:[Win2000/VB.NET]
分類:[.NET]

はじめまして。よろしくお願いします。

.NET プログラミング Tips で紹介されている
「画像やテキストファイルを実行ファイルに埋め込む」
を参考にしてWAVファイルを埋め込んだのですが、
それをどうやって読み出すのかわからず困っております。
読み出したデータはメディアプレイヤー(msdxm.ocx)で再生する予定です。
普通に外部のWAVファイルであれば再生できるのですが、
できれば実行ファイルと1つにしたいと考えています。
どうかご教授をお願いします。
Windows Media Playerにバイト列から直接再生ができる機能を一通り探しましたが見つかりませんでした(あくまで「一通り」なので詳しく探せばあるかもしれません)。
その代わりに一時ファイルとしていったんファイルに出力してそのパスを与えて再生するというのはどうでしょうか。

int data;
Assembly asm = Assembly.GetExecutingAssembly();
FileStream fileStream;

Stream stream = asm.GetManifestResourceStream("projectName.demo.wav");
if(stream != null)
{
// Tempフォルダ内に指定していますが、
// 他のアプリケーションがまったく同名のファイルを作成している可能性や
// 多重起動・強制終了でやはり同名のファイルがすでに作成されているときの処理のためにも
// 専用のフォルダ内に作成したほうがいいかもしれません
filePath = String.Format(@"{0}demo.wav",Path.GetTempPath());

fileStream = new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.Write);
data = stream.ReadByte();
while(data != -1)
{
fileStream.WriteByte(Convert.ToByte(data));
data = stream.ReadByte();
}
fileStream.Close();
stream.Close();

this.axWindowsMediaPlayer1.URL = filePath;
}

この一時ファイルは不要になったら削除してください(基本的にはアプリケーション終了後がいいと思います)。
ご回答ありがとうございます。
自分でも色々調べてはみたのですが、やはり直接読み出すのは
無理っぽいみたいですね^^;
仕方がないので外部ファイルの読み込みで組んでみましたが。。。
ご提示いただいた方法も試してみて試行錯誤したいと思います。
また何か方法がありましたらよろしくお願いします。
ありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板