在mediaElement中设置位置(WP8.1中的ScrubbingEnabled替代)

时间:2014-07-18 11:38:57

标签: c# wpf windows-phone-8.1

我正在尝试在视频暂停时设置视频位置。 在WPF中,使用 ScrubbingEnabled 很简单 属性。 但对于Windows手机来说,没有这样的东西。 所以我用:

_mediaElement.Play();
_mediaElement.Position += new TimeSpan(0,0,0,0,50);//move video 50 milisecond forward
_mediaElement.Pause();

这是"工作",但当我试图(大约)5毫秒回来时,它正在向前发展并且它不是明确的解决方案......

如何在Windows手机上替换 ScrubbingEnabled 属性?

修改

5ms的代码:

_mediaElement.Play();
_mediaElement.Position -= new TimeSpan(0,0,0,0,5);
_mediaElement.Pause();

2 个答案:

答案 0 :(得分:1)

即使假设您的视频以每秒60帧的速度运行,每16.67毫秒也只有一帧。因此,移动5毫秒应该在许多情况下什么都不做。

这也可以解释为什么当你要求它移动50毫秒时,它不会移动那个确切的数量,而是转到最近帧的时间。

(如果您将位置移动几帧,由于数字视频压缩的工作方式,它可能无法正常工作)

答案 1 :(得分:0)

确定。这不是答案,但今天WP8.1已经过时了,在Windows 10上设置mediaElement的位置工作得很好,没有Play-Pause黑客攻击。 所以:

_mediaElement.Position -= new TimeSpan(0,0,0,0,33);

将视频移回1帧(30 FPS视频),

_mediaElement.Position -= new TimeSpan(0,0,0,0,5);

没有移动到任何地方。

一件有趣的事情:

要移动1帧,您需要至少改变帧时间的一半。

_mediaElement.Position -= new TimeSpan(0,0,0,0,16);//not moving
_mediaElement.Position -= new TimeSpan(0,0,0,0,17);//moving every 2nd "click"

30 FPS视频的帧时间为1000/30 = 33.333 ms