我已经花了几天时间从 Phonon 媒体对象中抓取帧。我的目标是按照用户指定的间隔捕获帧。我首先尝试实现一个处理 Phonon::MediaObject 的 tick 信号的插槽。然而,由于 tick 信号在第一次机会就被发出,因此时间差异有时会有一些变化……虽然这不是一个不能解决的问题,但我还是进一步调查了一下,并尝试了 seek 和 grabWidget 的组合,但似乎 seek 需要一些时间才能完成,并且没有任何方法通知应用程序视频再次运行良好,这导致代码如下:
obj->seek(i*m_grabInterval);
QPixmap image = QPixmap::grabWidget(m_ui.videoPlayer);
90%的时间内保存一张黑色图像,但在其余时间内正确获取帧。
我的问题是,我能否对这两个想法做出任何改进,使它们更适合我,或者我完全忽略了更明显的方法?
提前感谢!