我在UWP应用中使用MediaPlayerElement。我希望将显示的值从TimeElapsedElement和TimeRemainingElement转换为帧数而不是秒数。
因此,目前我收到的值为:hh:mm:ss:ff(ff分之一秒)
我想要的值是:FFFFF(到目前为止已过去的总帧数)或标准时间码值,例如hh:mm:ss:FF(FF是当前秒内已经过去的帧)
似乎我尤其无法访问和修改TimeElapsed和TimeRemaining元素,但想知道这些值是否适合某种转换,从而获得媒体播放的帧速率并将该值转换为帧。
另外,我想知道是否可以使用MediaPlayer.PlaybackSession.Position创建自己的变量,该变量以帧而不是秒为单位,而是显示该值。我想象已经发生了一些转换,这些转换采用了加载媒体的帧率。
想知道您会建议哪种方法,以及是否可以指出我在C#中进行帧到帧转换所需的任何资源?感谢您的任何帮助,您可以提供!
当前MediaPlayerElement
不提供有关已通过多少帧的信息,时间是更一般的表达。
如果需要获取当前正在传递的帧数,则需要进行一些计算:
Frame rate * Play time
如何获得帧频
List<string> videoProperties = new List<string>();
videoProperties.Add("System.Video.FrameRate");
IDictionary<string, object> retrieveProperties = await file.Properties.RetrievePropertiesAsync(videoProperties);
double frameRate = ((uint)retrieveProperties["System.Video.FrameRate"])/1000.0;
如何获得过去的帧
var sec = MyPlayer.MediaPlayer.PlaybackSession.Position.TotalSeconds;
var frameCounts = sec * frameRate;
在大多数情况下它是适用的,但这只能用作参考值。因为某些视频的帧频不是固定的。
谢谢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句