2015-09-23 3 views
1

Я обсуждал эту тему на другом форуме, и никто не мог реально помочь, посмотрим, может ли кто-нибудь здесь.SoundCloud Stream_url не работает на Raspberry Pi

У меня проблема с URI, который вы получаете от Soundcloud Api, чтобы воспроизвести песню. На моем Dekstop это команда:

mediaelement.Source = new Uri("https://api.soundcloud.com/tracks/218090824/stream?client_id=YOUR_CLIENT_ID"); 
mediaelement.Play(); 

работает просто отлично, на PI это не совсем, не догадывается почему.

У меня есть обходной путь, на данный момент, который выглядит следующим образом:

  Uri turi = new Uri("https://api.soundcloud.com/tracks/218090824/stream?client_id=YOUR_CLIENT_ID"); 

      IRandomAccessStreamReference rsr = RandomAccessStreamReference.CreateFromUri(turi); 
      PBar.Visibility = Windows.UI.Xaml.Visibility.Visible; 
      StorageFile file1 = await StorageFile.CreateStreamedFileFromUriAsync("test mp3", turi, rsr); 
      IRandomAccessStream stream = await file1.OpenReadAsync(); 

      PBar.Visibility = Windows.UI.Xaml.Visibility.Collapsed; 
      mediaElement.PosterSource = img; 
      mediaElement.SetSource(stream, "audio/mp3"); 
      mediaElement.Play(); 

Проблема здесь в том, что файлы загружаются, прежде чем они играют, это не проблема, если songfile является < 10 Мб, но с mixapes> 100 мб это занимает много времени. Так можно ли получить IRandomAccessStream из URI, который можно воспроизводить во время загрузки?

Это решение:

HttpClient httpClient = new HttpClient(); 
     HttpResponseMessage response = await httpClient.GetAsync("https://api.soundcloud.com/tracks/218090824/stream?client_id=YOUR_CLIENT_ID", HttpCompletionOption.ResponseHeadersRead); 
     HttpResponseMessage rs = await httpClient.GetAsync(response.RequestMessage.RequestUri, HttpCompletionOption.ResponseHeadersRead); 
     Stream stream = await rs.Content.ReadAsStreamAsync(); 
     IRandomAccessStream content = stream.AsRandomAccessStream(); 
     mediaElement.SetSource(content, "audio/mpeg"); 

не работает, потому что я получаю сообщение об ошибке, когда я хочу, чтобы преобразовать поток в IRandomAccessStream, который говорит: «» Невозможно использовать указанный поток в качестве среды выполнения Windows IRandomAccessStream потому что этот поток не поддерживает поиск «

+0

Проверить эту ссылку по поводу исключения вы получаете, возможно, изменить преобразование потоков с одним из решений, предусмотренных Http:.. // stackover flow.com/questions/7669311/is-there-a-way-to-convert-a-system-io-stream-to-a-windows-storage-streams-irando – Overmachine

+0

Пробовал это уже, если я это сделаю, тогда У меня такая же проблема с ожиданием, потому что поток копируется. – Eych

ответ

0

Проблема была решена с последней ОС Windows Update ВГД

+0

Какое решение теперь работает? – czesio

+0

mediaelement.Source = новый Uri ("https://api.soundcloud.com/tracks/218090824/stream?client_id=YOUR_CLIENT_ID"); mediaelement.Play(); – Eych

Смежные вопросы