我正在尝试在视频暂停时设置视频位置。 在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();
答案 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