2

HTTPストリームへのリンク形式は次のとおりです(ユーザー、パスワード、アドレスはダミーに変更されました):

http://username:password@192.168.0.104:8093/axis-cgi/mjpg/video.cgi

このストリームはVLCで完全に機能します。ただし、OpenCV ライブラリを使用して開くことはできません。

これが私のコードです:

#include <iostream>
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

int main()
{
    VideoCapture cap;
    const string videoStreamAddress = "http://username:password@192.168.0.104:8093/axis-cgi/mjpg/video.cgi";
    cap.open(videoStreamAddress);
    if (!cap.isOpened())
    {
        cout << endl << "Videostream not found !" << endl;
        system("pause");
        return 0;
    }

    Mat frame;

    while(1)
    {
        cap >> frame;
        if (frame.empty())
            break;

        imshow("IPcamera", frame);

        int c = waitKey(1);
        if (c == 27)
        {
            break;
        }
    }

    waitKey(0);
    return 0;
}

これは私にエラーを与えます:

warning: Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:529)

これは次を指します:

bool CvCapture_FFMPEG::open( const char* _filename )
{
    unsigned i;
    bool valid = false;

    close();

#if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(52, 111, 0)
    int err = avformat_open_input(&ic, _filename, NULL, NULL);
#else
    int err = av_open_input_file(&ic, _filename, NULL, 0, NULL);
#endif

    if (err < 0)
    {
        CV_WARN("Error opening file");
        goto exit_func;
    }
...

何が問題になる可能性がありますか?

4

1 に答える 1

0

Videocapture を使用して、マシンでビデオ ファイルを開こうとしましたか? (URLを置いた場所にビデオファイルへのパスを追加するだけです)同じように失敗すると思います。これはffmpegの問題です。ffmpeg をサポートする OpenCV を自分でビルドする必要があります。(gstreamerでも検索してください。私はそれについてあまり詳しくありません)。

また、途中でManyCamなどの別のソフトウェアを使用することもできます。ウェブカメラから読み取るのと同じ方法で、ストリームを簡単に読み取ることができます。

于 2013-11-14T11:39:43.890 に答える