关于如何将m38u文件流式传输到Metro风格应用程序(WinRT)的指导

Ate*_*eik 6 silverlight wpf live-streaming windows-runtime

我正在将m38u文件传输到直播电视频道.我试图打开这些文件(因为它们只是媒体类型为"MPEG/TS"的文件列表)并构建了一个播放列表.但视频之间的转换很糟糕,在开始下一个视频之前会暂停一两秒.

我不介意编写一些服务器端代码来解决这个问题,但我需要一些指导.

out*_*man 0

我不知道你如何设置播放列表,但我想你应该这样做:

  1. 你有一个 MediaElement
  2. 您订阅 MediaElement.MediaEnded 事件
  3. 您解析 m38u 文件并将列表中的第一个流设置为 MediaElement.Source。
  4. 您处理 MediaElement.MediaEnded ,每次只需从列表中设置下一个流。

这是真的吗?如果是,那么您的问题是第 4 步。每次设置新源时,MediaElement 都会从服务器请求流并缓冲至少一些内容以开始显示视频。我想这就是为什么你会看到 3 秒转换的原因。这就是你需要解决这个问题的方法:

  1. 您有相同的 MediaElement。
  2. 您需要实现自己的 IRandomAccessStream 接口,该接口可以将流下载到内存(如果不是很大)或磁盘上,或者只是具有特定缓冲区大小的缓冲流。
  3. 您解析 m38u 文件,首先初始化 IRandomAccessStream 并将其设置为源。
  4. 例如,当第一个视频使用了 90% 的时间时 - 您需要从播放列表初始化第二个流,开始使用 IRandomAccessStream 下载它。
  5. 当 MediaElement.MediaEnded 被触发时 - 您将拥有已为 MediaElement 准备好的缓冲流,因此您只需从步骤 4 开始设置流。