Я создаю простое приложение, которое воспроизводит онлайн-радио, например, австрийский Kronehit, Arabella, OE3 и немного сербский. Я проверил весь переполнение стека и не смог найти ничего, что смогу использовать. У меня уже есть некоторый код, который вроде работает, но мне нужно что-то для постоянного обновления моего приложения. Я пытался с таймером, но я не нашел его работы. Вот текущий код:
public async Task<string> GetMetaDataFromIceCastStream(string url)
{
HttpClient m_httpClient = new HttpClient();
m_httpClient.DefaultRequestHeaders.Add("Icy-MetaData", "1");
var response = await m_httpClient.GetAsync(url, HttpCompletionOption.ResponseHeadersRead);
m_httpClient.DefaultRequestHeaders.Remove("Icy-MetaData");
if (response.IsSuccessStatusCode)
{
IEnumerable<string> headerValues;
if (response.Headers.TryGetValues("icy-metaint", out headerValues))
{
string metaIntString = headerValues.First();
if (!string.IsNullOrEmpty(metaIntString))
{
int metadataInterval = int.Parse(metaIntString);
byte[] buffer = new byte[metadataInterval];
using (var stream = await response.Content.ReadAsStreamAsync())
{
int numBytesRead = 0;
int numBytesToRead = metadataInterval;
do
{
int n = stream.Read(buffer, numBytesRead, 10);
numBytesRead += n;
numBytesToRead -= n;
} while (numBytesToRead > 0);
int lengthOfMetaData = stream.ReadByte();
int metaBytesToRead = lengthOfMetaData * 16;
byte[] metadataBytes = new byte[metaBytesToRead];
var bytesRead = await stream.ReadAsync(metadataBytes, 0, metaBytesToRead);
var metaDataString = System.Text.Encoding.UTF8.GetString(metadataBytes);
return metaDataString;
}
}
}
}
return null;
}
Если честно, я действительно не знаю, что он делает, я скопировал его откуда-то: D
Вот код, где я использую эту функцию:
private async void bunifuFlatButton1_Click(object sender, EventArgs e)
{
label3.Text = "";
Radio radio = new Radio();
axWindowsMediaPlayer1.URL = "http://onair.krone.at/kronehit-hd.mp3";
string url = "http://onair.krone.at/kronehit-hd.mp3";
radio.Text= "Radio Player - Radio KRONEHIT";
label1.Text = "Kronehit - Mehr geile hits!";
pictureBox.BackgroundImage = Image.FromFile("../../img/kronehit.png");
string s = await GetMetaDataFromIceCastStream(url);
label3.Text = s;
}
Надеюсь, что вы мне поможете!