2017-05-05 184 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更具体的代码!