关键帧有 I 帧、P 帧、B 帧
咱们关注的是 I 帧,因为 I 帧少,P 帧和 B 帧太太多了
应用 pyav 获取 I 帧,能够用上面的代码:
样例代码:
import avimport av.datasetscontent = av.datasets.curated("pexels/time-lapse-video-of-night-sky-857195.mp4")with av.open(content) as container: # Signal that we only want to look at keyframes. stream = container.streams.video[0] stream.codec_context.skip_frame = "NONKEY" for frame in container.decode(stream): print(frame) # We use `frame.pts` as `frame.index` won't make must sense with the `skip_frame`. frame.to_image().save( "night-sky.{:04d}.jpg".format(frame.pts), quality=80, )
视频数据处理办法!对于开源软件FFmpeg视频抽帧的学习