Silverlight MediaElement进展

时间:2010-07-08 19:20:31

标签: silverlight progress-bar slider mediaelement

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

要做到这一点,我有一个进度条显示下载进度,并有一个滑块覆盖显示当前位置。

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

例如:

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

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

有关如何正确同步的任何建议吗?

感谢。

1 个答案:

答案 0 :(得分:4)

这是可能的,因为视频流压缩算法不会导致与时间成比例的字节计数。例如,一个运行60分钟的300MB视频文件不会自动跟踪文件中的30分钟将是150MB点。

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

修改

  

那么如何让它们同步?

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

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