как получить формат файла MPEG в OpenCV - PullRequest
0 голосов
/ 03 апреля 2019

Я использую opencv и его функции для записи видео в формате отдельного файла в формате .mpeg (вместо .avi).Хотя я изменил кодек и размер видео на основе других веб-ссылок. Также я установил ffmpeg. Но я получил ту же ошибку для каждого варианта кодека.

[[OpenCV: FFMPEG: тег 0x314d4950 / 'PIM1' не поддерживается с идентификатором кодека 1 и форматом потока программ mpeg / MPEG-1 Systems / MPEG '[mpeg1video @ 0x1dac700] MPEG1 / 2 не поддерживает10/1 fps Не удалось открыть кодек mpeg1video: ошибка не указана]]]

\\writeVideo  = new VideoWriter(videoFileName, CV_FOURCC('M','P','E','G') , 10, Size(640,480),true);

.,,,strcat (newVideoFileName, ".mpeg");

Я ожидаю видеофайл в формате mpeg / mpg, но при фактическом выводе он не отображает запись видео

1 Ответ

0 голосов
/ 03 апреля 2019

videoFileName устанавливает формат файла, а CV_FOURCC устанавливает кодек.

Если вы хотите .mpeg, тогда используйте videoFileName = "1.mpeg".

Пример:

    cv::VideoWriter vw("1.mpeg", cv::VideoWriter::fourcc('M','P','G','1'), 25, cv::Size(640,480), true);
    if (vw.isOpened())
    {
        cv::Mat rgb(480, 640, CV_8UC3, cv::Scalar(255, 0, 0));
        for (int i = 0; i < 20; ++i)
        {
            vw << rgb;
        }
        rgb = cv::Mat(480, 640, CV_8UC3, cv::Scalar(255, 0, 255));
        for (int i = 0; i < 20; ++i)
        {
            vw << rgb;
        }
        rgb = cv::Mat(480, 640, CV_8UC3, cv::Scalar(0, 0, 255));
        for (int i = 0; i < 20; ++i)
        {
            vw << rgb;
        }
        vw.release();
    }
    else
    {
        std::cout  << "1.mpeg not opened" << std::endl;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...