ПРИМЕЧАНИЕ: Этот вопрос задается повторно, потому что я случайно нажал на Вики сообщества в предыдущем, и, очевидно, это не давало людям достаточных стимулов в виде репутации, чтобы ответить на них. Вот ссылка на старый вопрос, пожалуйста, не дублируйте эти ответы (они все равно не помогли):
Ссылка на оригинальный вопрос
Теперь вот вопрос ...
Я пытаюсь написать приложение для Windows Mobile, ориентированное на Windows Mobile 6.x, которое будет передавать потоковое интернет-радио, передаваемое по протоколу MMS (среди прочего, только одна функция).
Есть ли в .NET Compact Framework встроенные элементы управления или API, которые будут это делать? Или мне нужно начать искать стороннюю библиотеку?
Я немного запутался, почему это не будет поддерживаться в .NET Compact Framework? Я имею в виду, что MMS является проприетарным потоковым протоколом Windows от Microsoft.
На самом деле я тоже не уверен, как транслировать MP3 через http. Я пробовал это, но это было неудачно:
Некоторые статьи MSDN об использовании WMPLib.dll
На самом деле, безуспешно, если я перехожу к самому Windows Media Player на мобильном устройстве и даю ему тот же URL-адрес, который я пытаюсь программно транслировать. Однако этот же URL-адрес работает из проигрывателя Windows Media на моем настольном компьютере. И да, он введен правильно.
На самом деле я натолкнулся на другую идею воспроизвести файл MP3 на Windows Mobile в моем собственном приложении, но у него нет возможности потоковой передачи на лету. Вместо этого он загружает весь файл перед его воспроизведением на мобильном устройстве. Вот некоторый код:
string url = @"http://blahblah.com/blahblah.mp3";
string tempFilePath = Path.GetTempPath() + "tempFile.mp3";
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fs = new FileStream(tempFilePath, FileMode.Create, FileAccess.ReadWrite))
{
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
fs.Write(buffer, 0, bytesRead);
}
}
}
}
SndPlaySync(tempFilePath, 0);
А вот и DllImport:
[DllImport("aygshell.dll", SetLastError = true)]
private static extern IntPtr SndPlaySync(string Path, uint Flags);
У кого-нибудь есть советы, как вместо этого транслировать MP3?
Заранее спасибо.