Как мне рендерить кадры из FFmpeg на экран в приложении для iOS? - PullRequest
1 голос
/ 19 декабря 2011

Я новичок в iOS, но я реализовал подпрограмму воспроизведения на основе FFmpeg на Android.Я планирую сделать это снова на iOS.

Похоже, что я могу использовать OpenGL ES 1.1 / 2.0, чтобы рисовать кадры из видео FFmpeg на экран.Однако OpenGL ES кажется сложным.Кроме того, я столкнулся с некоторыми ограничениями из-за ширины видео текстуры.Мне пришлось разделить видеокадр на множество изображений и нарисовать их на экране, чтобы создать кадр.

Есть ли более простой способ рендеринга этого видео с использованием OpenGL ES на iOS?Есть ли другой способ быстрого рисования 2-D видеокадров на экране в iOS?

1 Ответ

1 голос
/ 20 декабря 2011

Ах.Итак, вы хотите визуализировать источник не в POT.Это может быть сделано без разделения на несколько текстур - путем создания текстуры самого близкого размера POT, рендеринга в нее и размывания только той части, которая фактически содержит изображение.Посмотрите здесь для примера (C ++).Соответствующие части:

//Calculating the texture size
double exp = ceil(log((double)max(Texture.HardwareHeight, Texture.HardwareWidth))/log(2.0));
texsize = min(pow(2, exp), (double)maxSize);

, затем

//draw the original frame 1:1 into the (larger) texture
float ymax = min(2.0f*((float)Texture.HardwareHeight/(float)texsize) - 1.0f, 1.0f);     //clamping is for cards with
float xmax = min(2.0f*((float)Texture.HardwareWidth/(float)texsize) - 1.0f, 1.0f);      //smaller max hardware texture than the current frame size

Используйте эти максимальные значения вместо 1,0 в качестве координат текстуры при рендеринге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...