OpenCV-Python VideoCapture仅加载部分视频

时间:2016-10-01 15:22:50

标签: python opencv video loading frame

我目前正在尝试使用Python中的OpenCV逐帧加载超高清视频(3840×2160)。我正在使用OpenCV库中的VideoCapture对象,它似乎工作正常,除了事实,它只加载26帧。

视频 8:54 分钟 .mp4 30fps H.264 编码。

我的代码的简化如下所示

import cv2

def get_frames(filepath):
    cap = cv2.VideoCapture(filepath)
    while cap.isOpened():
        success, frame = cap.read()

        if not success: 
            break

        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        yield frame

该代码似乎适用于较低分辨率的其他视频。 我使用Python 3.5.1和cv2的3.1.0版本。

有没有人遇到过同样的问题,或者可以推荐任何其他库来快速加载Python中的视频帧?

感谢。

修改

根据VLC的中位数信息,该视频具有以下属性:

Codec:              H264 - MPEG-4 AVC (part 10)(avc 1)
Resolution:         3840x2178
Display resolution: 3840x2160
Frame rate:         29.970030
Decoded format:     Planar 4:2:0 YUV full scale

我尝试使用以下命令

首先使用ffmpeg转换影片
ffmpeg -i video.mp4 -crf 18 video_converted.mp4

实际上使代码工作,即使属性完全相同(根据VLC)。

0 个答案:

没有答案