2017-05-05 108 views
1

我正在使用Windows 10 UWP MediaPlayer構建音頻流應用程序。 大多數流都是類型爲shoutcast/icecast的mp3流,其中包含有關流中嵌入的程序的元數據。如何從UWP MediaPlayer獲取流元數據?

我玩的語音串流的代碼基本上是這樣的:

mediaPlayer.Source = MediaSource.CreateFromUri(channelUri); 
mediaPlayer.Play(); 

雖然我完全有能力與HttpClient的打開同一數據流的URL,解析元數據和讀取信息的,這不是什麼我想要。我需要每隔10秒左右獲取一次元數據,而不想同時進行兩個會話。

所以我有兩個問題:

  1. 的是能夠讀取元數據UWP MediaPlayer的成分,如果是這樣,怎麼樣?
  2. 如果沒有,是否可以通過httpclient(或其他)打開流,讀取元數據,然後將相同的流發送到MediaPlayer?

示例流:http://sverigesradio.se/topsy/direkt/164-hi-mp3

回答

1

我從來沒有用過UWP,但我對你從網絡發展的角度看未來的解決方案,它看起來像UWP使用一個非常類似的API。

UWP MediaPlayer組件是否能夠讀取元數據,如果是這樣,如何?

可能不是。我見過的微軟代碼都沒有。網絡瀏覽器的媒體播放器也沒有任何處理。

如果沒有,是否可以通過httpclient(或其他)打開流,讀取元數據,然後將相同的流發送到MediaPlayer?

是的,這正是你應該做的。

使用MediaSource擴展。至少在網絡瀏覽器環境中,MSE允許您使用任何您想要的方式獲取媒體數據,然後將其傳遞到媒體播放器,讓它通過編解碼器和播放進行播放。

在瀏覽器中,您將使用提取API,以便與Icy-MetaData: 1頭的HTTP請求,以便從服務器請求的元數據,讀取Icy-MetaInt響應頭,以確定該元數據塊中的字節偏移,然後解復元數據從音頻數據中將音頻數據放入緩衝區後發送給媒體播放器。

一些資源,讓你開始爲UWP:

抱歉,我不能給你UWP更具體的代碼!