在mediaElement中设置位置(WP8.1中的ScrubbingEnabled选项)
本文关键字:中的 ScrubbingEnabled 选项 WP8 mediaElement 设置 位置 | 更新日期: 2023-09-27 18:13:24
我正在尝试设置视频的位置,而视频暂停。在WPF中,使用ScrubbingEnabled就很简单了财产。但windows phone没有这样的功能。所以我使用:
_mediaElement.Play();
_mediaElement.Position += new TimeSpan(0,0,0,0,50);//move video 50 milisecond forward
_mediaElement.Pause();
它是"工作",但当我试图去(大约)5毫秒后,它正在向前移动,它是不清楚的解决方案…
如何在windows phone上替换ScrubbingEnabled属性?
编辑
返回5ms的代码:
_mediaElement.Play();
_mediaElement.Position -= new TimeSpan(0,0,0,0,5);
_mediaElement.Pause();
即使假设你的视频以每秒60帧的速度运行,每16.67毫秒也只有一帧。所以移动5毫秒在很多情况下应该没什么用。
这也解释了为什么当你让它移动50毫秒时,它并没有移动那个精确的量,而是移动到最近的帧的时间。
(如果你只移动了几帧,由于数字视频压缩的工作原理,它可能也不会像你期望的那样工作)
好的。这并不是确切的答案,但是今天WP8.1已经过时了,在Windows 10上使用mediaElement设置位置没有播放暂停hack也可以很好地工作。所以:
_mediaElement.Position -= new TimeSpan(0,0,0,0,33);
将视频向后移动1帧(30 FPS视频),
_mediaElement.Position -= new TimeSpan(0,0,0,0,5);
没有移动。
一个有趣的事情:
要移动一帧,你需要改变至少一半帧时间的位置。
_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