Как я могу воспроизвести FLV-файл в приложении C ++ OpenGL? - PullRequest
1 голос
/ 24 июня 2011

Я пытаюсь воспроизвести файл .flv в окне GLUT, используя OpenGL и C ++ в Linux, но я не уверен, с чего начать.

Возможно ли это сделать?Если да, то как?

Ответы [ 3 ]

3 голосов
/ 24 июня 2011

Убедитесь, что вы имеете в виду .flv , а не .swf .

Это довольно просто. Декодируйте видео с помощью чего-то вроде libavcodec , и вы можете использовать необработанные кадры в качестве текстур.

1 голос
/ 24 июня 2011

Если вы действительно хотите это сделать, проверьте исходный код Gnash.У них есть рендер, который использует OpenGL.Однако рендеринг - это лишь небольшая часть работы, вам также нужно декодировать аудио / видео, запускать ActionScript и т. Д., Чтобы запустить флэш-файл.

Это настолько сложно, что даже Adobe не удалось сделать это правильно:)

0 голосов
/ 24 июня 2011

Если вы хотите воспроизвести только несколько видео, посмотрите ответ @ Banthar, в противном случае:


OpenGL - это API рисования без излишеств.Это дает вам компьютерный эквивалент «ручек и кистей» для рисования на некотором кадровом буфере.Период.Нет более высокого уровня функциональности, чем это.

Прошить это действительно сложная вещь.Он состоит из системы объектов векторной геометрии, механизма сценариев (ActionScript), обеспечивает сжатие звука и видео и т. Д. Все это должно поддерживаться проигрывателем SWF.В банкомате есть только один полнофункциональный проигрыватель SWF, и это тот, который делает Adobe.Существуют бесплатные альтернативы, но за официальными флеш-плеерами стоят несколько основных версий (Lightspark, Gnash).

Поэтому наиболее жизнеспособной вещью было загрузить плагин для браузера Flash-плеера в вашей программе через интерфейс плагина.предоставьте его, который браузер предоставил плагину (DOM, HTTP транспорт и т. д.), и пусть плагин будет отображаться во внеэкранный буфер, который вы затем копируете в контекст OpenGL.Но это не очень эффективно.

TL; DR: усложняется как sh ** и, вероятно, не стоит усилий.

...