【发布时间】:2011-07-12 19:27:44
【问题描述】:
有谁知道如何在 FFmpeg 中实现按秒(或毫秒)搜索。我目前有一个使用 av_read_frame() 遍历视频帧的循环,我想确定该帧应该在几秒钟内的时间。如果它到达某个点,那么我想在视频中寻找到稍后的点。顺便说一句,它不是视频播放器,只是处理帧。我听说我应该能够从数据包中获取 dts 或 pts,但它总是返回 0。
【问题讨论】:
-
请注意,在不是“仅 I Frame”的编解码器中,您可能会在搜索后的前几帧中得到垃圾,直到 ffmpeg 获得足够的信息来为您提供完整的帧。我已经有一段时间没有尝试过了,但是AFAIK,这仍然是真的。 ffmpeg 假设您是玩家,并且不关心出现错误的几帧,或者您正在直接处理并按顺序获取所有帧。如果不是这样,您可能会遇到 MPEG4 等问题。
-
@wrosecrans 非常感谢您提供的信息。正如你所解释的那样,我遇到了一些奇怪的事情,我了解到尝试寻找关键帧是要走的路。如果您尝试寻找不是关键帧的视频部分,那么您会在一秒钟内得到一些奇怪的输出。
标签: c++ c ffmpeg video-processing