この質問は、以前のスレッドPlay mp3 from internet without FileOpenDialog から派生したものです。
誰かがこれについて何か知っていることを本当に願っています。ローカルに保存されたファイルを再生する代わりに、WebRequest を使用してダウンロード ストリームを開始し、ストリームを再生するように言われました。ただし、PlayMp3FromUrl のコードを使用しようとすると、次のエラーが発生します。
「'NAudio.Wave.WaveOut' には、'3' 個の引数を取るコンストラクターが含まれていません」
次の行でコンパイルが失敗します。
using (WaveOut waveOut = new WaveOut(0, 500, null))
これは完全なコードです:
public static void PlayMp3FromUrl(string url)
{
using (MemoryStream ms = new MemoryStream())
{
using (Stream stream = WebRequest.Create(url)
.GetResponse().GetResponseStream())
{
byte[] buffer = new byte[32768];
int read;
while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
}
ms.Position = 0;
using (WaveStream blockAlignedStream =
new BlockAlignReductionStream(
WaveFormatConversionStream.CreatePcmStream(
new Mp3FileReader(ms))))
{
using (WaveOut waveOut = new WaveOut(0, 500, null))
{
waveOut.Init(blockAlignedStream);
waveOut.Play();
while (blockAlignedStream.Position < blockAlignedStream.Length)
{
System.Threading.Thread.Sleep(100);
}
}
}
}
}
WaveOut がどの引数を取るかを調べるのを手伝ってくれる人はいますか?
編集: おそらく WaveOut.cs を見たいと思うでしょうが、かなり長いです。ここでWaveOut.csを見てください。