Russian Qt Forum

Qt => Общие вопросы => Тема начата: Akon от Февраль 04, 2014, 11:47



Название: Комбинирование нескольких видеопотоков в один и отображение (как можно быстрее)
Отправлено: Akon от Февраль 04, 2014, 11:47
Задача следующая: например, есть 4 видеопотока с 4-х виодекамер. Нужно их скомбинировать вместе (т.е. будет 4-ре окна в одном, как обычно в системах видеонаблюдения), предварительно отресайзив. Из результата также можно создать видеопоток. Как это лучше сделать, как тут может помочь OpenGL для отображения? ffmpeg? 


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


Название: Re: Комбинирование нескольких видеопотоков в один и отображение (как можно быстрее)
Отправлено: lesav от Февраль 04, 2014, 13:38


Цитата: http://stackoverflow.com/questions/15391368/how-to-combine-multiple-ffmpeg-streams-into-a-single-4x4-collage
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  (http://ffmpeg.org/ffmpeg-filters.html#overlay-1)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]"


Название: Re: Комбинирование нескольких видеопотоков в один и отображение (как можно быстрее)
Отправлено: Akon от Февраль 04, 2014, 14:08
А как при этом в реалтайме этот скомбинированный поток отображать в приложении?


Название: Re: Комбинирование нескольких видеопотоков в один и отображение (как можно быстрее)
Отправлено: lesav от Февраль 05, 2014, 06:01
libvlc

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