【问题标题】:Silverlight MediaElement Position Property WeirdnessSilverlight MediaElement 位置属性怪异
【发布时间】:2010-06-18 11:18:48
【问题描述】:

我有一个 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 次回放

[剪辑]

播放进度: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;
        }
    }

有人知道为什么会这样吗?

【问题讨论】:

    标签: silverlight audio mediaelement


    【解决方案1】:

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

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

    【讨论】:

    • 出于好奇,为什么不希望搜索到内容的最后 1 秒?此外,他们为什么要对它进行编码以使 getter 也夹紧而不仅仅是 setter?不确定你是否知道答案,但这似乎是一种奇怪的行为,我无法理解为什么。
    • 我相信这与您拥有媒体播放器的 Slider 场景有关。我只分享我理解的内容,不幸的是它并不完整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2014-10-24
    • 1970-01-01
    相关资源
    最近更新 更多