Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Categories:

Видеомиксер

У меня тут накопился бэклог задач, многие из них селф-контейнед и можно отдавать на аутсорс.

Видеомиксер с самым коротким описанием наверное.

Есть 2 источника видео: файл с альфа-каналом и камера. Надо их смикшировать и сделать "плеер" с перемоткой видео-файла.

К файлу требования чтобы был со сжатием (сжатые форматы с альфой есть, но их немного; в принципе достаточно чтобы система со 100 часами видео уместилась на недорогой массив). К камере требования чтобы 720p@25 или выше.

В первом приближении (но это не обязательно - главное чтобы были удовлетворены требования выше) у нас линукс, файл в формате видео флеша, камера - вебкамера v4l mjpeg, и микшируем мы через gstreamer.

Gstreamer всё умеет и даже более-менее микширует без перемотки, но в случае перемотки файлового стрима впадает в ступор из-за того что файл и камера генерируют кадры в разное время. Там 3 источника расхождения:

- камера может снизить FPS из-за освещённости,
- расхождения по фазе - т.е. момент генерации кадра камерой отличается от момента генерации кадра видео на долю межкадрового промежутка
- камера генерирует монотонно растущие таймстемпы, а перемотка - таймстемпы от начала файла

Первый источник мы можем отбросить пока, считаем что освещение "студийное" и его достаточно чтобы камера не снижала FPS, а с остальными двумя надо побороться, и в этом собственно заключается задача.

Если сходу сделать не получится - решением считается отправка письма в мейллист gstreamer c минимальным примером (они там любят си) и получение ответа в виде "это сделать нельзя/не поддерживается/баг", т.е. добиться от них понимания и воспроизведения проблемы.

Доп требования: гуй должен быть "дубовым", под низкоквалифицированного оператора, в котором нельзя ничего "случайно нажать". Т.е. запуск условного Премьера который умеет делать реалтайм превью микса не годится. Кроме того задача максимум стоит не только выводить в поток но и писать смикшированное видео в файл(ы). Т.е. просто рендерить самому на экране не годится. В случае gstreamer достаточно формировать его поток который потом рендерится его рендерером. Если какие-то проблемы возникнут с тем что нельзя просто взять и писать поток в файл - это считается отдельным скоупом и в задачу не входит.
Tags: programming, бэклог
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 1 comment