2010-02-17 3 views
1

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

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

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

Спасибо!

+0

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

+0

Я просто не уверен, что вы помещаете видео в поверхную поверхность, затем замаскируете его над ним или вам нужно сделать какую-то цветную клавишу обман, где вы в основном замаскированы на фоне пурпурного цвета, поэтому аппаратное обеспечение знает, где разместить видео (где пурпурный), и где оставить свою переднюю графику нетронутой. – Steve314

+0

«Оверлей» в основном * это * видео - не ваша графика переднего плана.Я предполагаю, что ваша графика накладывается поверх наложения ;-) - видео накладывается поверх окна ваших приложений. – Steve314

ответ

1

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

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

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

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

1

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

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

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

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

Смежные вопросы