在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();

在mediaElement中设置位置(WP8.1中的ScrubbingEnabled选项)

即使假设你的视频以每秒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