Russian Qt Forum
Сентябрь 22, 2024, 00:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отображение потокового видео WiFi камеры  (Прочитано 10324 раз)
alexlogvinenkoit
Гость
« : Ноябрь 25, 2011, 13:32 »

Всем здрасьте!

Такое вот дело:
Есть WiFi камера, работает по HTTP протоколу, послал запрос - получил ответ...
С ней разобрался, могу получить картинку (JPEG), видео поток (MJPEG) или аудио поток (WAVE)...
Ну и, естественно, сохранить все это в файлы...

Вопрос: как средствами Qt (ОС Linux (Ubuntu)) отобразить видео в реальном времени из MJPEG потока?

Спасибо!
Записан
Bepec
Гость
« Ответ #1 : Ноябрь 25, 2011, 13:43 »

QPhonon помоему позволяет такую возможность.
Записан
alexlogvinenkoit
Гость
« Ответ #2 : Ноябрь 25, 2011, 15:46 »

Что-то не получается

Вот, что выдает компилятор
Код:
WARNING: Phonon needs QCoreApplication::applicationName to be set to export audio output names through the DBUS interface 
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: Phonon::createPath: Cannot connect  Phonon::MediaObject ( no objectName ) to  Phonon::AudioOutput ( no objectName ).
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: Phonon::createPath: Cannot connect  Phonon::MediaObject ( no objectName ) to  Phonon::VideoWidget ( no objectName ).
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded
WARNING: bool Phonon::FactoryPrivate::createBackend() phonon backend plugin could not be loaded

Вот сам код
Код:
int main(int argc, char ** argv)
{
    QApplication app (argc, argv);

    QWidget * widget = new QWidget();
    widget->setGeometry(0, 0, 320, 240);

    Phonon::VideoPlayer * player = new Phonon::VideoPlayer(Phonon::VideoCategory, widget);
    player->play(QUrl(QString("http://192.168.1.254/mjpeg.cgi")));

    widget->show();

    return app.exec();
}

Чего можно сделать?
Спасибо!
Записан
Bepec
Гость
« Ответ #3 : Ноябрь 25, 2011, 15:52 »

Как вариант подключить к проекту модуль Phonon Улыбающийся

в pro что то там написать надо, а в интеграции в настройках Qt проекта.
Записан
alexlogvinenkoit
Гость
« Ответ #4 : Ноябрь 25, 2011, 15:55 »

Если бы я не подключил phonon в pro файле (QT += phonon) - он бы отругался на создание объекта, мол такого класса вообще в природе не существует или undefined reference...

Тут что-то другое...
Записан
alexlogvinenkoit
Гость
« Ответ #5 : Ноябрь 25, 2011, 16:06 »

А вообще Phonon MJPEG воспринимает?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Ноябрь 25, 2011, 16:12 »

Бэкенды установлены? Допустим, Phonon GStreamer backend.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
alexlogvinenkoit
Гость
« Ответ #7 : Ноябрь 25, 2011, 16:22 »

Backend (photon-backend-gstreamer) установил, теперь появился черный экран.
Видео flv - воспроизводит, нормально...
MJPEG - не воспроизводит (ни из потока, ни из локального файла)...
Может быть еще что-то доставить?
Спасибо!
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Ноябрь 25, 2011, 16:23 »

Попробуй другие бэкенды: Phonon XINE backend, Phonon VLC backend.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
alexlogvinenkoit
Гость
« Ответ #9 : Ноябрь 25, 2011, 16:26 »

Спасибо, попробую!
Записан
alexlogvinenkoit
Гость
« Ответ #10 : Ноябрь 25, 2011, 16:51 »

Backend xine и gstreamer не работают, vlc - не могу установить...

Делаю sudo apt-cache search phonon-backend - выдает такое:

Код:
phonon-backends-dbg - debugging symbols for Phonon backends
phonon-backend-xine - поддержка Xine 1.1.x для Phonon
phonon-backend-gstreamer - поддержка GStreamer 0.10.x для Phonon
phonon-backend-null - Phonon null backend (no real backend)

Если сделать sudo apt-get install -y phonon-backend-vlc - то выдает такое:

Код:
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Пакет phonon-backend-vlc недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list
E: Для пакета phonon-backend-vlc не найдены кандидаты на установку

Пробовал просто скачать .deb пакет - не устанавливается, выдает ошибку:

Код:
Ошибка: Зависимость не может быть удовлетворена: libqtcore4 (>= 4:4.7.0~beta1)

Как можно еще поставить?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Ноябрь 25, 2011, 16:53 »

Ты лучше погугли на счет поддержки бэкендами твоего формата.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
alexlogvinenkoit
Гость
« Ответ #12 : Ноябрь 25, 2011, 17:15 »

Сам  VLC может проигрывать mjpeg файлы, если речь об этом...
Записан
Silver_swift
Гость
« Ответ #13 : Ноябрь 26, 2011, 07:46 »

Странно, у меня vlc установился без проблем
Цитировать
sudo apt-get install phonon-backend-vlc
. Только не помогло.
Дело в том что скомпилированная программа почему-то не находит бэкенды, а не в том что бэкенды не умеют что-то читать.
У меня системный qt4-configure вообще не видит даже модулей фонона, а тот который был с SDK прекрасно все находит.
Спросил http://www.prog.org.ru/topic_20025_0.html что делать - тишина. Гугление тоже не шибко помогает.

И если бы формат не поддерживался бэкендом программа выкинула бы соответствующее сообщение.

Если найдете решение проблемы не поленитесь отписаться.  Спасибо.

Записан
alexlogvinenkoit
Гость
« Ответ #14 : Декабрь 02, 2011, 15:39 »

Нормального решения так и не нашел, но, к счастью, можно использовать ненормальное:
Получаю байты в потоке, формирую QImage и отрисовую эту картинку с помощью QPainter Улыбающийся

Cтруктура MJPEG файла:
Заголовок\r\n\r\nДанные(обычный JPEG)\r\n\r\n
Заголовок\r\n\r\nДанные(обычный JPEG)\r\n\r\n
и т.д.

QImage::fromData(QByteArray) - выдираем данные картинки и все Улыбающийся

В общем-то очень неплохо, без лагов, покадровок, подвисаний и т.д.
На слабой машине тестировал - в браузере подвисал, в моей проге - нет... Но ЦП жрет... Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 23.