Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在mediaElement中设置位置(WP8.1中可擦洗的备选方案)_C#_Wpf_Windows Phone 8.1 - Fatal编程技术网

C# 在mediaElement中设置位置(WP8.1中可擦洗的备选方案)

C# 在mediaElement中设置位置(WP8.1中可擦洗的备选方案),c#,wpf,windows-phone-8.1,C#,Wpf,Windows Phone 8.1,我试图在视频暂停时设置视频的位置。 在WPF中,使用可擦洗的 财产。 但对于windows phone来说,没有比这更好的了。 因此,我使用: _mediaElement.Play(); _mediaElement.Position += new TimeSpan(0,0,0,0,50);//move video 50 milisecond forward _mediaElement.Pause(); 这是“工作”,但当我试图返回(约)5毫秒时,它正在向前移动,并且不清楚解决方案 如何替换wi

我试图在视频暂停时设置视频的位置。 在WPF中,使用可擦洗的 财产。 但对于windows phone来说,没有比这更好的了。 因此,我使用:

_mediaElement.Play();
_mediaElement.Position += new TimeSpan(0,0,0,0,50);//move video 50 milisecond forward
_mediaElement.Pause();
这是“工作”,但当我试图返回(约)5毫秒时,它正在向前移动,并且不清楚解决方案

如何替换windows phone上的ScrubingEnabled属性

编辑 5毫秒后的代码:

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

即使假设您的视频以每秒60帧的速度运行,每16.67毫秒也只有一帧。因此,在许多情况下,移动5毫秒可能不起任何作用

这也解释了为什么当你要求它移动50毫秒时,它并没有移动那么多,而是移动到最近帧的时间


(如果您只移动了几帧位置,由于数字视频压缩的工作方式,它也可能不会像您预期的那样工作)

确定。这并不是确切的答案,但如今WP8.1已经过时,在Windows10上使用mediaElement设置位置可以很好地工作,而不需要播放暂停。 因此:

正在将视频向后移动1帧(30 FPS视频),并且

他哪儿也不动

一件有趣的事:

要移动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

能否显示返回5毫秒的代码?这就是你看到问题的地方,对吧?问题是,这个解决方案不清楚-这就是为什么它在5毫秒后不起作用的原因(视频正在向前播放,时间在变化)你试过这个吗:_mediaElement.Position+=新的时间跨度(0,0,0,0,-5);这并不能解决问题。例如:_mediaElement.Position-=新的时间跨度(0,0,0,50);正在向后移动。。。但我看到的不完全是50毫秒(我猜大约是44秒,取决于计算机性能)。好吧,这将是我的下一个猜测-5毫秒太小了。这意味着我的解决方案(播放更改位置暂停)是在暂停时更改mediaElement中位置的最佳方法?
_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"