1
我有一個在線收音機的URL,我想播放它。所以,我這樣做了:讀取流並將其寫入字節數組並使用audioTrack類播放它。這裏的代碼:Xamarin Android C#播放音頻流(在線廣播)
private static async Task Play()
{
using (WebClient wcDownload = new WebClient())
{
// Create a request to the file we are downloading
WebRequest webRequest = (HttpWebRequest)WebRequest.Create("http://media.vmariel.ru:8000/puls");
// Set default authentication for retrieving the file
webRequest.Credentials = CredentialCache.DefaultCredentials;
// Retrieve the response from the server
WebResponse webResponse = (HttpWebResponse)webRequest.GetResponseAsync().Result;
// Ask the server for the file size and store it
Int64 fileSize = webResponse.ContentLength;
// Open the URL for download
System.IO.Stream strResponse = wcDownload.OpenRead(new System.Uri("http://media.vmariel.ru:8000/puls"));
// It will store the current number of bytes we retrieved from the server
int bytesSize = 0;
// A buffer for storing and writing the data retrieved from the server
byte[] downBuffer = new byte[131072];
// Loop through the buffer until the buffer is empty
AudioTrack audioTrack = new AudioTrack(
// Stream type
Android.Media.Stream.Music,
// Frequency
48000,
// Mono or stereo
ChannelConfiguration.Stereo,
// Audio encoding
Android.Media.Encoding.Pcm16bit,
// Length of the audio clip.
downBuffer.Length,
// Mode. Stream or static.
AudioTrackMode.Stream);
audioTrack.Play();
while ((bytesSize = strResponse.Read(downBuffer, 0, downBuffer.Length)) > 0)
{
await audioTrack.WriteAsync(downBuffer, 0, downBuffer.Length);
}
}
}
但這種方式,我只能聽到噪音,沒有音樂。