Графическое программирование поверх воспроизведения видео - PullRequest
1 голос
/ 17 февраля 2010

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

У вас есть подсказка?

пс. Я обычно программирую на Python и C, поэтому, если есть какое-то решение с этими двумя, я очень ценю.

Спасибо!

Ответы [ 3 ]

1 голос
/ 16 марта 2010

Предложение: используйте Openframeworks

http://www.openframeworks.cc/documentation

Это в C ++, а не C.

Проверьте документацию для класса VideoPlayer

1 голос
/ 16 марта 2010

Вы можете визуализировать видео с помощью OpenGL, используя текстурированный квадрат, а затем выполнить весь 2D-рисунок сверху (с соответствующей настройкой матрицы 2D-проекции), используя GL.

В зависимости от вашего кодека, вы, скорее всего, получите данные YUV (а не RGB). В зависимости от платформы и вашего оборудования вы можете использовать собственный тип текстуры, чтобы избежать необходимости сначала преобразовывать его в RGB.

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

Существует множество инструментов, графов сцен, библиотек виджетов и т. Д. Для OpenGL, которые вы также можете использовать.

1 голос
/ 04 марта 2010

Я думаю, что вы можете использовать этот учебник, чтобы получить работающий видеоплеер в SDL: http://dranger.com/ffmpeg/tutorial01.html

В учебнике используются SDL и ffmpeg. В «уроке 01» видеокадр конвертируется в 24-битный RGB, так что вы можете просто сделать несколько трюков и перевести на поверхность.

Если вы хотите наложение, вы можете увидеть эту библиотеку: http://www.libsdl.org/projects/sdlyuvaddon/

Существует функция (Get_YUV_From_Surface) для преобразования поверхности в YUV. Вам нужно будет изменить его в соответствии с вашими потребностями, но вы можете увидеть функцию, чтобы получить некоторые идеи.

...