Перейти к содержимому
Compvision.ru
mishanyaros

Не воспроизводит обычное видео.

Recommended Posts

Есть стандартный код для воспроизведения видео из файла:

#include <iostream>
#include <string>
#include <cstdlib>

#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv/cv.h"
#include "opencv/highgui.h"

int main(int argc, char* argv[])
{
        IplImage *frame = 0;
        // имя файла задаётся первым параметром
        char* filename = "/home/test/1.mp4";

        printf("[i] file: %s\n", filename);

        // окно для отображения картинки
        cvNamedWindow("original",CV_WINDOW_AUTOSIZE);

        // получаем информацию о видео-файле
        CvCapture* capture = cvCreateFileCapture( filename );

        while(1){
                // получаем следующий кадр
                frame = cvQueryFrame( capture );
                if( !frame ) {
                        break;
                }

                // здесь можно вставить
                // процедуру обработки

                // показываем кадр
                cvShowImage( "original", frame );

                char c = cvWaitKey(33);
                if (c == 27) { // если нажата ESC - выходим
                        break;
                }
        }

        // освобождаем ресурсы
        cvReleaseCapture( &capture );
        // удаляем окно
        cvDestroyWindow("original");
        return 0;
}

но видео не воспроизводится, т.е. в цикл while() мы не заходим, просто выводится путь к файлу и все. Файл такой существует и путь правильный (проверял).

Что может быть такого? Раньше с этим не сталкивался.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чему равен capture?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Значит либо не найден файл по пути, либо кодек подходящий.

Я бы посмотрел в отладчике, что происходит внутри cvCreateFileCapture, чем он пробует открывать файл, где и что обламывается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Значит либо не найден файл по пути, либо кодек подходящий.

Я бы посмотрел в отладчике, что происходит внутри cvCreateFileCapture, чем он пробует открывать файл, где и что обламывается.

путь к файлу верный. Дело в том, что раньше было все ок. И когда какого-то кодека не было, то была ошибка. Сейчас вообще ничего. Может, есть какой-то общий набор кодеков, который можно поставить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну, надо поискать в репозиториях твоего дистрибутива. Если это Debian, то что-то должно быть, тот же Mint ставит их из коробки. Это же и к Fedora относится.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну, надо поискать в репозиториях твоего дистрибутива. Если это Debian, то что-то должно быть, тот же Mint ставит их из коробки. Это же и к Fedora относится.

у меня Ubuntu 14.04. Знать бы, что искать. А установить проблема. Это всегда так в opencv, что ошибки с кодеками вообще никак не дают о себе знать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А что cmake говорит при сборке OpenCV?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Как говорит выше BeS, надо в CMake посмотреть на список поддерживаемых интерфейсов захвата и проигрывания видео (можно и в исходниках посмотреть).
2. В консоль никакие ошибки также не пишутся (std::out, std::err)?
3. Что за версия OpenCV? Возможно, стоит испоьзовать C++ API, а не устаревшую С-версию. Может, в ней что-то банально не реализовали за ненадобностью.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×