অডিও (উদাহরণস্বরূপ, MP3 টি) direcly A থেকে খেলতে C # একটি উপায় আছে কি System.IO.Stream ডিস্কে সাময়িকভাবে তথ্য সংরক্ষণ না করেই একটি WebRequest থেকে returend ছিল উদাহরণস্বরূপ?
নওদিওর সাথে সমাধান
নওদিও ১.৩ এর সহায়তায় এটি সম্ভব:
- একটি ইউআরএল থেকে একটি এমপি 3 ফাইল মেমোরিস্ট্রিমে লোড করুন
- এমপি 3 ডেটা সম্পূর্ণ লোড হওয়ার পরে তরঙ্গ ডেটাতে রূপান্তর করুন
- NAudio এর ওয়েভআউট ক্লাস ব্যবহার করে তরঙ্গ ডেটা প্লেব্যাক করুন
এমনকি অর্ধ লোড এমপি 3 ফাইল প্লে করতে সক্ষম হওয়াই ভাল লাগত তবে NAudio গ্রন্থাগারের নকশার কারণে এটি অসম্ভব বলে মনে হয় ।
এবং এটি ফাংশনটি কাজটি করবে:
public static void PlayMp3FromUrl(string url)
{
using (Stream 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(WaveCallbackInfo.FunctionCallback()))
{
waveOut.Init(blockAlignedStream);
waveOut.Play();
while (waveOut.PlaybackState == PlaybackState.Playing )
{
System.Threading.Thread.Sleep(100);
}
}
}
}
}