Обрезать видео перед кодированием с помощью MediaCodec для действия Grafika «Непрерывный захват»

Я узнаю о деятельности Grafika "Непрерывный захват", речь идет о записи видео с MediaCodec.

Исходный код активности находится по адресуhttps://github.com/google/grafika/blob/master/src/com/android/grafika/ContinuousCaptureActivity.java

Программа использует объект SurfaceTexture для получения данных с камеры и создает 2 объекта EGLSurface obj с этим объектом SurfaceTexture, один объект EGLSurface передает данные в MediaCodec, а другой - в SurfaceView для предварительного просмотра камеры. MediaCodec кодирует данные в данные h264, а MediaMuxer obj записывает данные h264 в файл mp4.

Но есть проблема, размер предварительного просмотра, поддерживаемый камерой, - это пространство (ширина> высота), например 1920 * 1080, 1440 * 1080, 720 * 480 и т. Д. Обычно мы берем телефон в портретной ориентации, когда записываем видео, поэтому мы должны использовать API: Camera.setDisplayOrientation (90), чтобы повернуть картинку в портретную, тогда портретное видео будет записано.

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

Но я не знаком с opengl, я не знаю, как обрезать данные SurfaceTexture. Может ли кто-нибудь, кто хорош в opengl, помочь мне?

Ответы на вопрос(1)

Ваш ответ на вопрос