视频捕获错误:声明src / libswscale / swscale_internal.h失败:668错误

时间:2019-01-31 21:30:58

标签: opencv ffmpeg

视频捕获读取给我这个错误。它最近在我更新到opencv4时开始。 opencv4安装没有错误。 libswscale是最新的,我有libswscale.so.4.8.100。

该代码是一个简单的“开放”和“读取”视频,用于解决问题:

#include<opencv2/core.hpp>
#include<opencv2/videoio.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<string>
#include <iostream>

int main(int argc, char **argv){
    cv::VideoCapture video;
    std::string filename(argv[1]);
    std::cout << "filename " << filename << std::endl;
    std::cout << "video.open " << video.open(filename) << std::endl;
    union {
        char ch[5] = {0};
        int i4cc;
    } fourcc;
    fourcc.i4cc = (int) video.get(cv::CAP_PROP_FOURCC);
    std::cout << "Fourcc " << fourcc.ch << std::endl;
    cv::Mat frame;
    while(true){
        std::cout << "video.read " << video.read(frame) << ", Mat.rows " << frame.rows << std::endl;
        cv::imshow("imagen", frame);
    }
}

输出是这个

filename ../Archivos/Vuelta al Lab Uno 720p.MP4
video.open 1
Fourcc avc1
Assertion desc failed at src/libswscale/swscale_internal.h:668

VideoCapture打开视频文件,显示fourcc属性,然后无法读取第一张图像。

如果您询问,视频文件很好,我尝试了其他视频文件和其他视频格式,但都出现了相同的错误。这些视频可以与ffmpeg.ffplay一起很好地播放!

顺便说一句,VideoCapture.read与网络摄像头配合正常。因此,不清楚问题出在哪里。

谢谢您的时间。

0 个答案:

没有答案