Silverlight MediaElement位置属性古怪

时间:2010-06-17 21:42:34

标签: silverlight audio mediaelement

我有一个MediaElement报告其位置错误和奇怪,但始终如一。看起来当它到达音频的最后一秒时(并且它始终是最后一秒,无论声音是2秒还是10秒),它都不会更新它的位置直到它完成。


示例输出:

  

播放进度:0 / 3.99 - 0播放

     

进度:0.01 / 3.99 - 0播放

     

进度:0.03 / 3.99 - 0播放

     

进度:0.06 / 3.99 - 1播放

     

进度:0.07 / 3.99 - 1播放

     

进度:0.08 / 3.99 - 2播放

     

进度:0.11 / 3.99 - 2播放

     

进度:0.14 / 3.99 - 3播放

     

进度:0.19 / 3.99 - 4播放

     

进度:0.23 / 3.99 - 5回放

     

进度:0.25 / 3.99 - 6播放

     

进展:0.28 / 3.99 - 7播放

     

进度:0.3 / 3.99 - 7播放

     

[SNIP]

     

播放进度:2.8 / 3.99 - 70

     

播放进度:2.83 / 3.99 - 70

     

播放进度:2.88 / 3.99 - 72

     

播放进度:2.9 / 3.99 - 72

     

播放进度:2.91 / 3.99 - 72

     

播放进度:2.92 / 3.99 - 73

     

播放进度:2.99 / 3.99 - 74

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3 / 3.99 - 75

     

播放进度:3.99 / 3.99 - 100


这是结果:

    WriteLine("Playback Progress: " + Position + "/" + LengthInSeconds + " - " + (int)((Position / LengthInSeconds) * 100));

    public double Position
    {
        get
        {
            return my_media_element != null ? my_media_element.Position.TotalSeconds : 0;
        }
    }

    public double LengthInSeconds
    {
        get
        {
            return my_media_element != null ? my_media_element.NaturalDuration.TimeSpan.TotalSeconds : 0;
        }
    }

任何人都有任何想法为什么会这样?

1 个答案:

答案 0 :(得分:2)

Silverlight中的Position属性具有“钳制”效果,可以导致这种情况,以防止试图说出最后1个内容。

不幸的是,没有简单的修复AFAIK。