现有一个需求为对硬盘的海量视频数据,用最快的效率提取每间隔n秒的视频帧图像,并进行AI推理。
由此经过网络查询相关技术,则判断只要获取到IDR帧数据,存储起来,就可以成功的解码成图片。此效率极高,可以在短时间内快速转换为图片。
一个完整的I帧是包含以下几个部分,
通过对抓取的H264视频流中的00 00 01 BA进行关键词截获分段,经过反复测试,满足下列几帧后,按顺序存储为"a.h264",cap=cv2.VideoCapture("a.h264")方式读取一帧帧图像,即可成功
# 0 00 00 01 BA 长度20 //第二步,从65帧往前偏移200,寻找BA帧开始。
# 1 00 00 01 BC 长度100
# 2 00 00 01 E0 长度18
# 3 00 00 01 67 长度14
# 4 00 00 01 E0 长度 13
# 5 00 00 01 68 长度 7
# 6 00 00 01 E0 长度 12
# 7 00 00 01 65 长度 63976(不固定) //第一步 先找到65帧
# 8 00 00 01 E0 长度 63988(不固定)
# 9 00 00 01 E0 长度1328(不固定)
#10 00 00 01 BA //第三步,从65帧向后找第一个BA帧
按照以上三步后,定位到完整的一帧后,写入到文件中,反复此步骤寻找65,直到末尾即可。