Воспроизведение видео с QT

Я хочу создать приложение, с помощью которого мне нужно проигрывать видеофайл со звуком (нужно проигрывать практически все виды видео).

Мне это нужно для Windows и Linux (по крайней мере для Windows).

Я планирую использовать QT или любой другой пакет? Как сделать?

Мне нужен графический интерфейс
http://www.youtube.com/watch?v=mA883X4uaHk (пожалуйста, смотрите от .35s)

Описание моего проекта:
1. Нужно проигрывать видео в ветке
2. В другой теме. Параллельно необходимо захватывать видео с веб-камеры и обрабатывать
рамки веб-камеры с алгоритмами Opencv, которые строят графики.

Планирование дублировать видео приложение YouTube. Я также должен использовать темы. И opencv поддерживает QT.

Что я сделал:
Использовал Java Media Framework для воспроизведения, что не удается, так как он не поддерживает все форматы.

0

Решение

В OpenCV вы можете сделать что-то вроде:

Mat frame;
VideoCapture vid("your_filename"); // open video file
if(!vid.isOpened()) // check if we succeeded
return -1;
vid >> frame; //extract a frame

Позже вы можете создать QImage и инициализировать его данными фрейма, например:

QImage *img = new QImage(frame.data, frame.cols, frame.rows, QImage::Format_RGB888);

Если у меня нет проблем, у меня просто возникла проблема, этот первый кадр был черным, поэтому мне нужно было сделать что-то вроде: vid >> frame; Sleep(1); vid >> frame; На всякий случай, если это случится и с тобой.

2

Другие решения

Если вы используете Qt версии 5, вы можете использовать QMediaPlayer и с версией 4 вы можете использовать фонон модуль (посмотрите на примеры, если я правильно помню, они содержат простой видеоплеер).

1

Что ж, если вы хотите использовать Qt5, то в модуле мультимедиа есть все, что вам нужно. Вы можете получить доступ к каждому кадру видео / камеры и обработать его. Вы можете использовать одну и ту же поверхность видео для воспроизведения видео и отображения кадров веб-камеры. В каталоге примеров мультимедийных виджетов Qt5 есть простые примеры, на которые вы можете ссылаться.

1
По вопросам рекламы [email protected]