Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

リソースとして埋め込まれたmp3の再生

mp3 WindowsAPI リソース 音楽 タグの編集...

投稿者   ()   投稿日時 2008/4/11 21:56:00
こんにちは。 
いつもお世話になっております。 
VB2005を使用しています。 
 
早速ですが、リソースとして埋め込まれたmp3形式のファイルを 
再生する方法はありますでしょうか? 
 
wav形式のファイルであれば以下の方法等で再生できるようなのですが 
 
        'オーディオリソースを取り出す 
        Dim strm As System.IO.Stream = My.Resources.Test 
 
        '同期再生する 
        Dim player As New System.Media.SoundPlayer(strm) 
        player.PlaySync() 
        '後始末 
        player.Dispose() 
 
この方法だとmp3は再生できないようで・・・ 
 
何か方法があればご教授下さい。 
不足している情報等あれば指摘をお願いします。 
よろしくお願いいたします。

投稿者 temp   ()   投稿日時 2008/4/12 01:20:00
このサイトのサンプルではだめなのか? 
 
サウンドを再生する 
http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample060Playmp3.htm 
 
マルチメディア欄 
http://homepage1.nifty.com/rucio/main/dotnet/Samples/SmpleCnt.htm

投稿者   ()   投稿日時 2008/4/12 23:46:00
>>1 
temp様、レスありがとうございます。 
 
このサイトのサンプルを見なかったわけでは 
ないのですが、どう使っていいものか分からなかった 
のです。 
力及ばず申し訳ありません。 
 
例えば「既存項目の追加」でTest.mp3というファイルを 
アセンブリに追加したとして、最終的にexeファイル単独 
でそのファイルを再生したいときには紹介していただいたサンプルの 
 
Dim FileName As String = "C:\Test.mp3" 
 
の行はどのように変更すればいいのでしょうか? 
お手数おかけしてすみません。

投稿者   ()   投稿日時 2008/4/18 04:01:00
方法を見つけるのに大分時間がかかりましたが、 
一時ファイルを使用することで再生に成功しました。 
 
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Integer, ByVal hwndCallback As Integer) As Integer 
 
    Private FileName As String 
 
    Private Sub btnPlay_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPlay.Click 
 
        Dim asm As System.Reflection.Assembly = _ 
                    System.Reflection.Assembly.GetExecutingAssembly() 
 
        'リソースの名前 
        Dim resourceName As String = asm.GetName().Name + ".Test.mp3" 
 
        'リソースを読み込む 
        Dim strm As System.IO.Stream = _ 
            asm.GetManifestResourceStream(resourceName) 
        Dim buffer() As Byte = New Byte(strm.Length) {} 
        strm.Read(buffer, 0, CInt(buffer.Length)) 
        strm.Close() 
 
        '一時ファイルに書き込む(拡張子をmp3に変更する) 
        FileName = Replace(System.IO.Path.GetTempFileName(), "tmp", "mp3") 
        Dim fs As New System.IO.FileStream( _ 
            FileName, System.IO.FileMode.Create) 
        fs.Write(buffer, 0, CInt(buffer.Length)) 
        fs.Close() 
 
        'サウンドを再生する 
        Call mciSendString(String.Format("open ""{0}"" alias MySound", FileName), "", 0, 0) 
        Call mciSendString("play MySound", "", 0, 0) 
 
    End Sub 
 
    Private Sub btnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStop.Click 
 
        'サウンドを停止する 
        Call mciSendString("stop MySound", "", 0, 0) 
        Call mciSendString("close MySound", "", 0, 0) 
 
        '一時ファイルを削除する 
        IO.File.Delete(FileName) 
    End Sub 
 
temp様、考えてくださった皆様、 
ありがとうございました。