2

我编写了一个自定义媒体流源,它可以播放来自不断增长的源文件(mpeg 传输流)的媒体。一旦到达其媒体流的末尾,它就会从媒体文件中读取新的持续时间并继续传送样本。MediaElement 连续播放。

不幸的是,我还没有找到更新 MediaElement.NaturalDuration 属性的方法。因此我无法进入“重新加载”区域,因为我不知道它并将我的位置更改设置为它的 NaturalDuration 值。

在获得新的流长度后,我尝试调用 ReportOpenMediaCompleted。然后 Naturalduration 得到更新,但我不能再玩了。

有没有其他方法来处理它?

4

1 回答 1

1

有时生活可以如此简单:-)

我在初始化我的 MediaStreamSource 时解决了它给 MediaElement 一个“幻想”持续时间值:

protected override void OpenMediaAsync()
{
...
mediaSourceAttributes[MediaSourceAttributesKeys.Duration] = TimeSpan.FromHours(10).Ticks.ToString(CultureInfo.InvariantCulture);
this.ReportOpenMediaCompleted(mediaSourceAttributes, mediaStreamDescriptions);
}

剩下要做的就是用“真实”持续时间更新我的滑块控件。现在它就像一个魅力......

蒂洛

于 2010-08-02T15:28:01.597 回答