2016-04-19 37 views
1

私はTResourceStreamには単純なWAVサウンドが含まれています。 Delphiのリソースからmp3コンテンツを再生するには?

私はresource.resファイルにその行を書いた: sound WAV "res\notify.wav"

I持ってWAVで動作し、次の方法:私はMP3にWAVに変換され、次のことをした

Res := TResourceStream.Create(HInstance, 'sound', 'WAV'); 
Res.Position := 0; 
SndPlaySound(res.Memory, SND_MEMORY or SND_ASYNC); 
Res.free; 

resource.resファイル:sound MP3 "res\notify.MP3"

はにプレイ方法最初の行を変更しました:

Res := TResourceStream.Create(HInstance, 'sound', 'MP3'); 

何も起こりません。何の例外もスローされず、音が聞こえません。

WAVファイルと同じようにMP3を再生するにはどうすればよいですか?

+0

関連項目[delphiのメモリからmp3ファイルを再生する方法](http://stackoverflow.com/q/6235673/62576) –

答えて

2

SndPlaySound APIは波形オーディオのみをサポートしています。汎用のマルチメディアAPIではないため、MP3再生を(直接的にも簡単にも)サポートしていません。

このAPIを使用してオーディオを再生するには、まずMP3を、そのAPIが期待する波形フォーマットにデコードする必要があります。

私はデータにWAVヘッダを付加することにより、MP3データを再生するのsndPlaySound APIを得ることが可能であるように思われることに注意しなければならない。しかし、オーディオに関する詳細情報は、そのヘッダに必要とされ、プロセスがあります

あなたのアプローチは、あなたのMP3データとそのデータを含むストリームを取得するために正しいと思われます。メモリには、そのMP3オーディオを再生するためのいくつかのオプションがあります。

BASS Audio Libraryは、このようなオプションの1つですが、これは商用ライブラリであり、特に安いものではありません。しかし、それはあなたが必要とするものを正確に実行することができます。

多くの選択肢がありますが、いくつかの安価なものもあれば無料のものもありますが、それらが広く使用されているかサポートされていない場合には、これを支援するのが難しくなるかもしれません。

でも、torry.netディレクトリに記載されているいくつかの選択肢を確認してください。具体的には、カタログのComponents \ Effects and Multimediaセクションにあります。

関連する問題