我正在尝试使用 System.Windows.Media.MediaPlayer 类来播放和捕获视频文件。这是一个安全摄像头应用程序,这里没有版权问题 - 实际上,我这样做是因为我想访问完整的 windows 媒体播放器编解码器库来打开 avi 文件(以及其他格式)。
我以为我让它完美地工作了。我将一个事件附加到 mediaPlayer.Changed 并使用 DrawingContext 等来捕获和保存帧。
但是,我刚刚发现 .Changed 并不总是为每一帧触发。如果视频低于约 6fps,它似乎可以正常工作,但高于此,Changed 不会触发超过约 6-7fps。在 10fps 视频的情况下,它似乎每 3 帧丢弃一次。我还在 25fps mpg 文件上进行了尝试,它达到了 12fps 的捕获率。
我认为这不是计算机资源问题,因为我使用的机器是具有大量内存的 i7s。另外,如果我将 mediaplayer.SpeedRatio = 0.5 更改,播放速率会下降到一半,但捕获率也会下降,并且会丢失相同比例的帧。
是否有一些我应该更改的参数(或者这是一个媒体播放器错误?)