【问题标题】:Silverlight MediaElement progressSilverlight MediaElement 进度
【发布时间】:2011-09-19 20:28:58
【问题描述】:

我正在尝试在 Silverlight 中创建自定义媒体播放器。我正在处理进度条。我希望进度条在播放时显示当前下载进度以及MediaElement 的当前位置。

为此,我有一个进度条来显示下载进度和一个叠加的滑块来显示当前位置。

我将两者的值设置为 100 的百分比。

例如:

ProgressBar.Value = MediaElement.DownloadProgress;
Slider.Value = (MediaElement.Position.TotalMilliseconds) / (MediaElement.NaturalDuration.TimeSpan.TotalMilliseconds);

问题是 Slider.Value 变得大于 ProgressBar.Value。这怎么可能?如何在比已下载位置更远的位置播放视频?

关于如何使这些正确同步的任何建议?

谢谢。

【问题讨论】:

    标签: silverlight progress-bar slider mediaelement


    【解决方案1】:

    这是可能的,因为视频流压缩算法不会产生与时间成正比的字节数。以一个运行 60 分钟的 300MB 视频文件为例,它不会自动跟随 30 分钟进入文件将是 150MB 点。

    如果视频的第一部分相对“安静”,它可能会很好地压缩,而后面更繁忙的部分可能不会压缩得那么好。因此,可能只下载了文件大小的一小部分,但播放了其总播放时间的较大比例。

    编辑

    那么我该如何让它们同步呢?

    您可以通过将滑块限制为下载进度或时间的最小值来伪造它。

    Slider.Value = Math.Min(mediaelement.Position.TotalMilliseconds / mediaelement.NaturalDuration.TimeSpan.TotalMilliseconds, mediaelement.downloadprogress);
    

    【讨论】:

    • 哇。当你这样想的时候,这是完全有道理的。视频的开头几乎全是黑色的,因此无需花费大量时间即可下载。那么如何让它们同步呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多