warning: Could not find codec parameters (../../mo

2019-02-15 10:53发布

I am trying to display the video feed from IP camera getting the following error

warning: Could not find codec parameters 

(../../modules/highgui/src/cap_ffmpeg_impl.hpp:540)

Here's the code for the same.

#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv; 
using namespace std;
int main(int, char**) 
{ 
VideoCapture vcap; 
Mat image;
// This works on a D-Link CDS-932L
const string videoStreamAddress = "http://admin:admin123@172.41.20.55:80/?    action=stream?dummy=param.mjpg";//From mjpeg streamer
//const string videoStreamAddress = "http://192.168.1.13:8080/videofeed?   dummy=param.mjpg"; // Streaming from android using ip-cam

//open the video stream and make sure it's opened
if(!vcap.open(videoStreamAddress)) {


cout << "Error opening video stream or file" << std::endl;
return -1;
}

for(;;) {
if(!vcap.read(image)) {
    cout << "No frame" << std::endl;
    waitKey();
}
cv::imshow("Output Window", image);
    if(cv::waitKey(1) >= 0) break;
}
}

First i got different error so I installed K-Lite codec. Now I am getting this error. Can some one please tell me what is the error related to. I have gone through many post from stackoverflow and opencv also but could manage to get a satisfactory answer. Please help me. Thanks in advance.

2条回答
女痞
2楼-- · 2019-02-15 11:15

I was able to Solve the problem with the following code.

#include <stdio.h>
#include <opencv2/opencv.hpp>


int main(){

CvCapture *camera=cvCaptureFromFile("http://username:password@ipOfCamera/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg");
if (camera==NULL)
    printf("camera is null\n");
else
    printf("camera is not null");

cvNamedWindow("img");
while (cvWaitKey(10)!=atoi("q")){
    double t1=(double)cvGetTickCount();
    IplImage *img=cvQueryFrame(camera);
    /*if(img){
        cvSaveImage("C:/opencv.jpg",img);
    }*/
    double t2=(double)cvGetTickCount();
    printf("time: %gms  fps: %.2g\n",(t2-t1)/(cvGetTickFrequency()*1000.), 1000./((t2-t1)/(cvGetTickFrequency()*1000.)));
    cvShowImage("img",img);
}
cvReleaseCapture(&camera);
}

Would be good if it helps someone like me. Also Thanks @karlphillip for giving your time.

查看更多
Animai°情兽
3楼-- · 2019-02-15 11:23

Warnings are not errors! Relax.

In this case FFmpeg is complaining and not OpenCV. The reason is probably because the mjpg format that is specified on the URL doesn't really require an actual codec.

查看更多
登录 后发表回答