python - GStreamer 的错误和警告是否会破坏我的输出?
问题描述
我正在使用 Python3 脚本将视频剪辑(.mp4)分割成帧(.png 图像)。为此,我使用 opencv (cv2) 方法。
import cv2
import os
dataset_folder = 'Video-dataset/'
save_path = 'Video-dataset-images/'
if not os.path.exists(save_path):
os.mkdir(save_path)
videos_list = os.listdir(dataset_folder)
video_ids = [re.findall("[0-9_]*", video)[0] for video in videos]
for video in video_ids:
video_path = dataset_folder + video + ".mp4"
save_name = save_path + video
cap = cv2.VideoCapture(video_path)
fps = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
fps_count = 0
for i in range(fps):
ret, frame = cap.read()
if ret:
cv2.imwrite(save_name+str(10000+fps_count)+'.png', frame)
fps_count += 1
我将实际的视频剪辑分割成图像,但是我还从脚本中得到以下回声:
[信息:0]视频:启用后端(7,按优先级排序):FFMPEG(1000);GSTREAMER(990);V4L2(980);CV_IMAGES(970); CV_MJPEG(960); 火线(950);GPHOTO2(940)
(python3.6:12757):GStreamer-CRITICAL **:13:40:56.545:gst_element_make_from_uri:断言'gst_uri_is_valid(uri)'失败GStreamer:错误打开bin:没有元素“视频数据集”
(python3.6:12757): GStreamer-CRITICAL **: 13:40:56.545: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed [WARN:0] VideoCapture(filename=Video-dataset/01.mp4) 没有构建支持请求的 backendID=300
(python3.6:12757):GStreamer-CRITICAL **:13:41:18.943:gst_element_make_from_uri:断言'gst_uri_is_valid(uri)'失败GStreamer:错误打开bin:没有元素“视频数据集”
(python3.6:12757): GStreamer-CRITICAL **: 13:41:18.943: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed [WARN:0] VideoCapture(filename=Video-dataset/03.mp4) 没有构建支持请求的 backendID=300
(python3.6:12757):GStreamer-CRITICAL **:13:41:19.331:gst_element_make_from_uri:断言'gst_uri_is_valid(uri)'失败GStreamer:错误打开bin:没有元素“视频数据集”
(python3.6:12757): GStreamer-CRITICAL **: 13:41:19.331: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed [WARN:0] VideoCapture(filename=Video-dataset/10.mp4) 没有构建支持请求的 backendID=300
(python3.6:12757):GStreamer-CRITICAL **:13:41:25.879:gst_element_make_from_uri:断言'gst_uri_is_valid(uri)'失败GStreamer:错误打开bin:没有元素“视频数据集”
(python3.6:12757): GStreamer-CRITICAL **: 13:41:25.879: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed [WARN:0] VideoCapture(filename=Video-dataset/15.mp4) 没有构建支持请求的 backendID=300
(python3.6:12757):GStreamer-CRITICAL **:13:41:31.485:gst_element_make_from_uri:断言'gst_uri_is_valid(uri)'失败GStreamer:打开bin时出错:没有元素“视频数据集”
(python3.6:12757): GStreamer-CRITICAL **: 13:41:31.485: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed [WARN:0] VideoCapture(filename=Video-dataset/27.mp4) 没有构建支持请求的 backendID=300
(python3.6:12757):GStreamer-CRITICAL **:13:41:38.932:gst_element_make_from_uri:断言'gst_uri_is_valid(uri)'失败GStreamer:错误打开bin:没有元素“视频数据集”
(python3.6:12757): GStreamer-CRITICAL **: 13:41:38.932: gst_element_get_state: assertion 'GST_IS_ELEMENT (element)' failed [WARN:0] VideoCapture(filename=Video-dataset/34.mp4) 没有构建支持请求的 backendID=300
解决方案
我终于明白了问题所在,这行代码是错误的,因为少数视频有字母数字名称。
video_ids = [re.findall("[0-9_]*", video)[0] for video in videos]
此外,这些相同的视频是我在循环中排除的 .avi 扩展名。
推荐阅读
- python - 向量化熊猫数据框中列的逐步函数
- python - 在python3中保存具有当前日期的Excel文件
- javascript - React Native Own 字体不会应用于所有元素
- mysql - 使用当前年份的上一年和未来年份数据的 SQL 查询
- jquery - 模式弹出按钮关闭后引导页面重定向
- sql - 为什么 NULL 不在 SQL 的布尔表达式中传播?
- php - SQL循环内的PHP/SQL查询表
- serialization - DDD ValueObject 和 Enumeration ,有没有什么好的方法来实现序列化?
- angular - Angular 9 和 docker 为什么 docker 只返回 doc 文件夹而不是构建应用程序?
- android - 在android中的眼睛图标上显示和隐藏密码