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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Комбинирование нескольких видеопотоков в один и отображение (как можно быстрее)  (Прочитано 3368 раз)
Akon
Гость
« : Февраль 04, 2014, 11:47 »

Задача следующая: например, есть 4 видеопотока с 4-х виодекамер. Нужно их скомбинировать вместе (т.е. будет 4-ре окна в одном, как обычно в системах видеонаблюдения), предварительно отресайзив. Из результата также можно создать видеопоток. Как это лучше сделать, как тут может помочь OpenGL для отображения? ffmpeg? 
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #1 : Февраль 04, 2014, 12:29 »

Задача следующая: например, есть 4 видеопотока с 4-х виодекамер. Нужно их скомбинировать вместе (т.е. будет 4-ре окна в одном, как обычно в системах видеонаблюдения), предварительно отресайзив. Из результата также можно создать видеопоток. Как это лучше сделать, как тут может помочь OpenGL для отображения? ffmpeg?  
Самое простое решение, с моей точки зрения, использование libvlc и какого-нибудь биндинга к Qt, например https://github.com/ntadej/vlc-qt или https://wiki.videolan.org/LibVLC_SampleCode_Qt/.
edit: упс, при таком решении из результата видеопоток не создать.
« Последнее редактирование: Февраль 04, 2014, 12:48 от Kurles » Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #2 : Февраль 04, 2014, 13:38 »



How to combine multiple ffmpeg streams into a single 4x4 collage?


I think you're looking for the ffmpeg overlay filter, here is the documentation with some examples. A copy of a 2x1 example is below, but you'll have to make adjustments for your stream format, frame sizes and more panels.
Код:
ffmpeg -i left.avi -i right.avi -filter_complex " \
  nullsrc=size=200x100 [background]; \
  [0:v] setpts=PTS-STARTPTS, scale=100x100 [left]; \
  [1:v] setpts=PTS-STARTPTS, scale=100x100 [right]; \
  [background][left]       overlay=shortest=1       [background+left]; \
  [background+left][right] overlay=shortest=1:x=100 [left+right]"
Записан

Akon
Гость
« Ответ #3 : Февраль 04, 2014, 14:08 »

А как при этом в реалтайме этот скомбинированный поток отображать в приложении?
Записан
lesav
Частый гость
***
Offline Offline

Сообщений: 235


qnx.org.ru


Просмотр профиля WWW
« Ответ #4 : Февраль 05, 2014, 06:01 »

libvlc

Но "реалтаймовостью" там и не пахнет, т.к. ffmpeg-у требуется время на преобразование
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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