6

我正在获取 m38u 文件以流式传输到直播电视频道。我试图打开这些文件(因为它们只是媒体类型为“MPEG/TS”的文件列表)并从中构建一个播放列表。但是视频之间的过渡很糟糕,它会在开始下一个视频之前暂停一两秒钟。

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

4

1 回答 1

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 步开始设置流。
于 2013-04-03T05:40:17.877 回答