Лучший отвечающий
Как воспроизвести аудио поток (WP7)?

Вопрос
-
Пытаюсь воспроизвести радио вещание из интернета. Напрямую через MediaElement не дает никакого результата. Пытался и через запрос, но не уверен, что правильно делаю.
private void Button_Click(object sender, RoutedEventArgs e) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://broadcast03.station.ru/rusradio?.wma"); request.AllowReadStreamBuffering = false; request.Method = "GET"; request.BeginGetResponse(new AsyncCallback(ReadAnswer), request); } void ReadAnswer(IAsyncResult res) { HttpWebRequest request = (HttpWebRequest)res.AsyncState; HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(res); Stream r = response.GetResponseStream(); // Вот дальше не знаю что делать }
- Изменено matrostik 7 февраля 2011 г. 7:02
6 февраля 2011 г. 19:04
Ответы
-
После длительных проверок удалось воспроизвести часть потоков:
1) Некоторые просто не работали в эмуляторе, пришлось проверять на девайсе.
2) Некоторые завелись после добавления к ссылке "?ext=.mp3".
3) В некоторых ссылках помогла замена http на mms.
4) Как и писалось ранее shoutcast-потоки MediaElement не проигрывает.
5) Все ссылки пришлось перехватывать сторонней программой, так как в большинстве случаев возвращается плейлист ввиде xml.- Помечено в качестве ответа Abolmasov Dmitry 16 февраля 2011 г. 6:50
15 февраля 2011 г. 20:21
Все ответы
-
Странно, что вариант с MediaElement у Вас не заработал. Вот такой код разметки у меня работает корректно:
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <MediaElement Source="http://broadcast03.station.ru/rusradio?.wma" /> </Grid> </Window>
6 февраля 2011 г. 20:38 -
Стандартными средствами содержимое Stream при помощи MediaElement в WPF не воспроизвести, метода SetSource(), как у аналогичного элемента в Silverlight, у него, к сожалению, нет.6 февраля 2011 г. 20:41
-
У меня и вот этот вариант не заработал:
Хотя если, как источник поставить обычный мп3 файл, то все работает.public Page1() { InitializeComponent(); mediaElement = new MediaElement(); LayoutRoot.Children.Add(mediaElement); mediaElement.Source = new Uri("http://broadcast03.station.ru/rusradio?.wma"); //mediaElement.Source = new Uri("Audio/Stromae.mp3", UriKind.Relative); mediaElement.Play(); }
6 февраля 2011 г. 20:50 -
Стандартными средствами содержимое Stream при помощи MediaElement в WPF не воспроизвести, метода SetSource(), как у аналогичного элемента в Silverlight, у него, к сожалению, нет.
Но SetSource() требует IsolatedStorageFileStream6 февраля 2011 г. 20:57 -
Нужно установить свойство LoadedBehavior:
MediaElement mediaElement = new MediaElement(); LayoutRoot.Children.Add(mediaElement); mediaElement.LoadedBehavior = MediaState.Manual; mediaElement.Source = new Uri("http://broadcast03.station.ru/rusradio?.wma"); mediaElement.Play();
6 февраля 2011 г. 21:05 -
Нет, вроде бы, обычный System.IO.Stream. Подробнее — здесь .6 февраля 2011 г. 21:07
-
Silverlight для Windows Phone:
SetSource(System.IO.Stream) присутствует, но не поддерживается в Silverlight for Windows Phone.п.с. А вообще непонятно то нет то да
Silverlight for Windows Phone
Поддерживается в версии: Windows Phone OS 7.0
6 февраля 2011 г. 21:11 -
Нужно установить свойство LoadedBehavior:
mediaElement.LoadedBehavior = MediaState.Manual;
это свойство отсутствует в Silverlight для Windows Phone6 февраля 2011 г. 21:16 -
А, ну так у Вас в вопросе не было указано про Silverlight для Windows Phone.
Все ответы выше справедливы только для WPF.
К сожалению, я не работал раньше с Windows Phone, не могу помочь.
6 февраля 2011 г. 21:34 -
Надеюсь чем-то поможет:
http://timheuer.com/blog/archive/2010/08/16/download-and-store-media-for-playback-in-windows-phone-7-using-mediastreamsource.aspx , хотя речь не о потоковом аудио.
И http://msdn.microsoft.com/en-us/library/ff769551(v=VS.92).aspx
А вообще рыть надо ==> http://msdn.microsoft.com/ru-ru/library/system.windows.media.mediastreamsource(v=VS.95).aspx
7 февраля 2011 г. 4:25 -
Спасибо, но уже читал статью и там воспроизведение файла уже сохраненного в телефоне, а с этим у меня проблемы нет.
7 февраля 2011 г. 5:00 -
Вот здесь есть в точности такой же вопрос, как и у Вас. Сотрудник Microsoft ответил, что в Windows Phone 7 пока нет поддержки shoutcast-потоков и такую поддержку нужно реализовывать самостоятельно при помощи класса MediaStreamSource. В проекте ManagedMediaHelpers есть пример для Windows Phone 7, позволяющий воспроизводить shoutcast-потоки в формате mp3. Осталось лишь реализовать аналогичное для формата wma.7 февраля 2011 г. 5:39
-
А разве это shoutcast-поток?
И я кстати и его уже пробовал, но тоже тишина в динамиках.
И даже попытался разковырять одну из прог, которая у меня не девайсе работает без проблем и вот что нашел:
string currentTrackUrl = this.m_station.CurrentTrackUrl; if ((this.m_station.Adjustments & Adjustments.MockMP3) == Adjustments.MockMP3) { currentTrackUrl = currentTrackUrl + "/File.mp3"; } this.m_mediaPlayer.Source = new Uri(currentTrackUrl); this.m_mediaPlayer.Play();
То есть просто используют MediaElement
this.m_mediaPlayer = new MediaElement();
Короче одни пляски с этим элементом
7 февраля 2011 г. 6:21 -
Да, в этом обсуждении тоже упоминают о том, что MediaElement в WP7 определяет формат потока по расширению, и дописывание чего-то, вроде "?ext=.mp3" помогает в случае с MP3-потоком.
Кстати, сервер broadcast03.station.ru анализирует HTTP-заголовки запроса, и если они не соответствуют ожидаемым (как это будет в примере в Вашем первом сообщении), он вернет список потоков (точно так же, как и программное обеспечение ShoutCast), в данном случае это:
[Reference] Ref1=http://broadcast03.station.ru/rusradio?.wma&MSWMExt=.asf Ref2=http://66.231.176.36:80/rusradio?.wma&MSWMExt=.asf
Я проверил заголовки, которые отправляет Windows Media Player для этого списка, они оказались вот такими:
GET http://broadcast03.station.ru/rusradio?.wma&MSWMExt=.asf HTTP/1.1 Accept: */* User-Agent: NSPlayer/12.0.7600.16385 Host: broadcast03.station.ru Pragma: version11-enabled=1 Pragma: no-cache,rate=1.000,stream-time=0,stream-offset=0:0,packet-num=4294967295,max-duration=0 Pragma: packet-pair-experiment=1 Pragma: pipeline-experiment=1 Supported: com.microsoft.wm.srvppair, com.microsoft.wm.sswitch, com.microsoft.wm.predstrm, com.microsoft.wm.startupprofile Pragma: xClientGUID={3300AD50-2C39-46c0-AE0A-4BE4F2D09208} Accept-Language: ru-RU, *;q=0.1
На такой запрос возвращается уже не список ссылок, а корректный ASF-поток с content-type: application/vnd.ms.wms-hdr.asfv1.
7 февраля 2011 г. 9:24 -
[Reference] Ref1=http://broadcast03.station.ru/rusradio?.wma&MSWMExt=.asf Ref2=http://66.231.176.36:80/rusradio?.wma&MSWMExt=.asf
7 февраля 2011 г. 10:57 -
Нет, вручную через HttpWebRequest не нужно, если Вы, конечно, не планируете и воспроизведение реализовывать полностью самостоятельно.
Продолжим эксперименты. Попробуйте выполнить следующие действия:
- установите IIS Smooth Streaming Client ;
- подключите к проекту сборку Microsoft.Web.Media.SmoothStreaming.dll;
- добавьте в раздел объявлений XAML строку
xmlns:smooth="clr-namespace:Microsoft.Web.Media.SmoothStreaming;assembly=Microsoft.Web.Media.SmoothStreaming"
- добавьте в XAML-код вот такой элемент:
<smooth:SmoothStreamingMediaElement AutoPlay="True" Source="http://broadcast03.station.ru/rusradio?.wma&MSWMExt=.asf"/>
- и сообщите о результатах в этой теме.
7 февраля 2011 г. 11:28 -
И с этим клиентом я уже колдовал удалось только проиграть какой-то индийский стрим, но ради спортивного интереса попробую еще раз.
Я правда использовал версию 1.5
7 февраля 2011 г. 11:55 -
<ss:SmoothStreamingMediaElement AutoPlay="True" Source="http://broadcast03.station.ru/rusradio?.mp3" />
Эта ссылка работать не хочет, но эта http://online-hitfm.tavrmedia.ua:7000/HitFM начинает проигрываться прямо из дизайнера, то есть сразу после вставки.
А вот эта http://www.geethamradio.com:8020/hifi.mp3.m3u только после запуска в эмуляторе.
Такой вариант вообще не пашет.<ss:SmoothStreamingMediaElement AutoPlay="True" SmoothStreamingSource="" />
7 февраля 2011 г. 12:45 -
Установлю сегодня вечером Windows Phone Developer Tools, поэкспериментирую.7 февраля 2011 г. 13:38
-
А вы точно уверены что, возвращаемый радио формат asf поддерживается windows phone 7?
Supported Media Codecs for Windows Phone
Попробуйте найти и воспроизвести какое-нибудь другое радио с форматом asf.
Для связи [mail]7 февраля 2011 г. 16:21 -
Для уверенности брал различные станции из списка станций, которые находятся в приложении, которое без проблем их проигрывает.
Продолжение......
И так в продолжение эксперимента, создал новый проект, в котором програмно создал MediaElement и подписался на CurrentStateChanged и начал просто подставлять ссылки, так вот есть ссылки ,которые работают (в основном те, что заканчиваются на ".mp3"), а есть ссылки, которые не рабоают и MediaElement статус меняется с Opening сразу на Closed.
Рабочая: http://stream.loveradio.ru:8000/Loveradio_96_stereo.mp3
Нерабочая: http://online-hitfm.tavrmedia.ua/HitFM_256Вот такие пироги, хотелось бы с этим уже разобраться и понять, как правильно воспроизводить поток.
П.С. А как узнать какой формат аудио дает сервер?
- Изменено matrostik 8 февраля 2011 г. 13:35 Продолжение......
7 февраля 2011 г. 17:05 -
SmoothStreamingMediaElement поигрался с ним еще раз, но все тот же результат, он ведет себя так же как и MediaElement, то есть проигрывает теже самые потоки.
Уже и не знаю, что предпринять.
9 февраля 2011 г. 8:20 -
Нерабочая: http://online-hitfm.tavrmedia.ua/HitFM_256
А если попробовать http://online-hitfm.tavrmedia.ua/HitFM_256?ext=.mp3 ?
П.С. А как узнать какой формат аудио дает сервер?
9 февраля 2011 г. 8:37 -
Нерабочая: http://online-hitfm.tavrmedia.ua/HitFM_256
А если попробовать http://online-hitfm.tavrmedia.ua/HitFM_256?ext=.mp3 ?
9 февраля 2011 г. 10:34 -
После длительных проверок удалось воспроизвести часть потоков:
1) Некоторые просто не работали в эмуляторе, пришлось проверять на девайсе.
2) Некоторые завелись после добавления к ссылке "?ext=.mp3".
3) В некоторых ссылках помогла замена http на mms.
4) Как и писалось ранее shoutcast-потоки MediaElement не проигрывает.
5) Все ссылки пришлось перехватывать сторонней программой, так как в большинстве случаев возвращается плейлист ввиде xml.- Помечено в качестве ответа Abolmasov Dmitry 16 февраля 2011 г. 6:50
15 февраля 2011 г. 20:21 -
Столкнулся с такой же дилемой, Вы нашли решение?7 сентября 2014 г. 21:14