解决Python OpenCV 读取视频并抽帧出现error while decoding的问题
解决Python OpenCV 读取视频抽帧出现error while decoding的问题
- 1. 问题
- 2. 解决
- 3. 源代码
- 参考
1. 问题
读取H264视频,抽帧视频并保存,报错如下;
[aac @ 00000220b9a07fc0] Input buffer exhausted before END element found
[h264 @ 00000220b9cd0500] error while decoding MB 20 45, bytestream -14
2. 解决
溯本求源:https://stackoverflow.com/questions/49233433/opencv-read-errorh264-0x8f915e0-error-while-decoding-mb-53-20-bytestream
发现问题原因是:它与时间有关,当在连续的capture.read()之间执行比较耗时的操作时会出现该错误。
解决:增加一个线程处理捕获到的视频帧就好~~~
3. 源代码
import os
import queue
import threadingimport cv2q = queue.Queue()
save_path = ''def get_frame_from_video(video_name, interval):"""Args:video_name:输入视频名字interval: 保存图片的帧率间隔Returns:"""# 开始读视频video_capture = cv2.VideoCapture(video_name)i = 0while True:success, frame = video_capture.read()# 检测是否到了视频尾部if not success or frame is None:print('video is all read')breaki += 1if i % interval == 0:q.put(frame)def Display(arr):print("Start Displaying")j = int(arr)while True:if q.empty() != True:frame = q.get()# 保存图片j += 1save_name = save_path + str(j) + '.jpg'cv2.imwrite(save_name, frame)print('image of %s is saved' % save_name)# cv2.imshow(save_name, frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakif __name__ == '__main__':video_name = 'F:\\v01.H264'j = 0save_path = video_name.split('.H264')[0] + "\\"print(save_path)interval = 125# 保存图片的路径is_exists = os.path.exists(save_path)if not is_exists:os.makedirs(save_path)print('path of %s is build' % save_path)p2 = threading.Thread(target=Display,args=[j])p2.start()get_frame_from_video(video_name, interval)
参考
- https://stackoverflow.com/questions/49233433/opencv-read-errorh264-0x8f915e0-error-while-decoding-mb-53-20-bytestream
- https://blog.csdn.net/darkeyers/article/details/84865363
解决Python OpenCV 读取视频并抽帧出现error while decoding的问题相关推荐
- python opencv读取视频没声音_python + opencv: 解决不能读取视频的问题
博主一开始使用python2.7和Opencv2.4.10来获取摄像头图像,程序如下: cap = cv2.VideoCapture(0) ret, frame = cap.read() 使用这个程序 ...
- OpenCV读取视频时丢帧的问题
OpenCV读取视频时会自动丢掉重复帧,导致读取到的帧数和视频里的实际总帧数不一致,比如说你用视频标注工具打开视频看到视频总共有855帧,可是使用OpenCV的VideoCapture类的read() ...
- python+opencv选出视频中一帧再利用鼠标回调实现图像上画矩形框
最近因为要实现模板匹配,需要在视频中选中一个目标,然后框出(即作为模板),对其利用模板匹配的方法进行检测.于是需要首先选出视频中的一帧,但是在利用摄像头读视频的过程中我唯一能想到的方法就是: 1.在视 ...
- python opencv 读取视频保存视频片段和图片
video4.avi为保存的视频名字 # -*- coding: utf-8 -*- """ Spyder EditorThis is a temporary scrip ...
- python+opencv读取视频并设置可调整窗口大小
import cv2cap = cv2.VideoCapture('data/1.mp4') while cap.isOpened():ret, frame = cap.read()# 调整窗口大小c ...
- python用OpenCV读取视频帧数、高度宽度等
python用OpenCV读取视频帧数.高度宽度等 import cv2 import time# 2655 def get_each_frame(video_path):# 读取视频文件videoC ...
- 使用OpenCV和Python高效计算视频的总帧数
使用OpenCV和Python高效计算视频的总帧数 1. 效果图 2. 源码 参考 这篇博客将介绍两种使用OpenCV和Python计算视频文件中帧数的方法. 超级快,它依靠OpenCV的视频属性功能 ...
- python视频批量抽帧脚本更新
原来的脚本代码:https://blog.csdn.net/JZJZ73/article/details/108851403 因项目工程需要,对原来的python视频批量抽帧脚本进行了更新,更新特点如 ...
- python视频抽帧 后 前端javascript如何显示_python通过ffmgep从视频中抽帧的方法
如下所示: ffmpeg中文文档:http://linux.51yip.com/search/ffmpeg ffmpeg -i test_baofeng.wmv -y -f image2 -ss 00 ...
最新文章
- qemu模拟armlinux执行目标文件系统的可执行文件
- 软考-信息系统项目管理师-组织级项目管理
- 卡尔曼滤波器推导与解析 - 案例与图片
- mysql数据类型优化
- 21张GIF动图让你秒懂数学原理
- Jira filter subscribe issues
- 判断网页是否为微信内置浏览器打开?
- html流星雨代码_HTML制作流星雨特效
- 什么是云计算时代?学云计算能做什么呢
- java流 视频_java如何对视频文件处理?包括拉流推流视频截取等?
- vivo7.0系统怎么无root激活XPOSED框架的教程
- 深入理解Java虚拟机-垃圾收集算法
- 个推里群推php教程,GitHub - lyx2297999137/yii2-igetui: yii2个推
- 提升10%!如何将机器学习模型准确率从80%提高到90%以上
- Springcloud使用全局捕获异常管理接口异常
- 圆柱体积怎么算立方公式_四个计算圆柱的体积常用公式(附例题)
- 深度学习FPGA实现基础知识17(图像处理卷积运算 矩阵卷积)
- Java操作Excel三种方式POI、Hutool、EasyExcel
- React 使用Markdown 更改样式
- 如何使用网易邮箱大师登录网易企业邮箱?