Как воспроизвести видеофайл в OpenGL?

9

Есть ли библиотека, которая позволит мне загрузить файл фильма и воспроизвести его в приложении OpenGL? Или, может быть, просто пример кода, который кто-то лежит вокруг? Я также использую GLUT, если это имеет значение. Я думаю, формат файла не имеет значения, хотя в настоящее время мой фильм в формате AVI.

Джимми Миллер
источник
Я бы хотел увидеть какую-нибудь библиотеку, которая использует ffmpeg и поддерживает буквально все.
Акалтар

Ответы:

4

Ну, есть этот очень древний учебник, который воспроизводит видео AVI с использованием фиксированной функции GL и Windows API.

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

Если у вас возникнут проблемы с производительностью, вы можете начать думать об оптимизации с помощью таких объектов, как объекты Pixel Buffer .

glampert
источник
Честно говоря, «Windows» не достаточно хороша. Если кто-то не поддерживает все платформы, он наносит вред всем остальным, предоставляя Microsoft силу, которой они не заслуживают.
Lolums
@Lolums, если вы на 100% привержены платформе, тогда я думаю, что можно использовать API, специфичный для системы. Но да, написание переносимого кода должно быть по умолчанию. Даже если вы используете API платформы, по крайней мере напишите над ним тонкую оболочку, чтобы избежать утечки деталей реализации и облегчить будущие потребности в портировании.
Гламперт
1

Если вы счастливы использовать формат ogg theora, то вы можете использовать TheoraPlay lib. Здесь есть полностью работающий плагин для движка Duality, который вы можете использовать для справки - https://github.com/Andrea/DualityOgvPlayerPlugin . Работает с opengl.

BraveSirAndrew
источник
1

Во-первых, вы можете проверить эти вопросы / ответы. Я не знаю, какая из них специфична для iOS, но они могут помочь:

Кроме того, limitz / AV3D - это сравнительно недавний проект C ++, использующий libavcodec для потоковой передачи фильма в текстуру OpenGL.

Pikalek
источник