リソースとして埋め込まれた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
サウンドを再生する
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"
の行はどのように変更すればいいのでしょうか?
お手数おかけしてすみません。
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様、考えてくださった皆様、
ありがとうございました。
一時ファイルを使用することで再生に成功しました。
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様、考えてくださった皆様、
ありがとうございました。
いつもお世話になっております。
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は再生できないようで・・・
何か方法があればご教授下さい。
不足している情報等あれば指摘をお願いします。
よろしくお願いいたします。