在我的一个应用程序中,我需要知道给定视频文件的帧位置(帧编号)和实际帧采样时间之间的映射。我在回调模式下使用Directshow SampleGrabber过滤器。我覆盖了ISampleGraberCB类的BufferCB方法,每当调用回调时,我都会将到达的sampletime映射到map中的frame位置。每当新样本从零开始到达时,帧位置就会递增。虽然我能够生成所需的地图,但当涉及到处理大型视频文件时,上述方法非常慢。有人能就如何快速生成此地图或任何其他更好的方法提供任何建议吗?
提前谢谢。
普拉迪普
发布于 2013-02-16 05:25:26
在DirectShow中基本上没有“帧编号”这样的东西,只有时间戳。唯一需要做的就是遍历整个文件并记录时间戳,就像你已经做的那样。
但是,如果您将样本采集器设置为接收原始/未解码的fames,则该过程可能会更快。这种方式不需要解码器,整个帧的迭代发生得非常快。不要忘记从图表中删除时钟以请求尽快处理(而不是默认的实时速度)。
https://stackoverflow.com/questions/14898471
复制相似问题