В идеале я бы хотел достичь двух целей:
- Передайте данные предварительного просмотра
Camera
в кодерMediaCodec
с помощьюSurface
. Я могу создатьSurface
с помощьюMediaCodec.createInputSurface()
, ноCamera.setPreviewDisplay()
занимаетSurfaceHolder
, а неSurface
. - Помимо передачи данных предварительного просмотра
Camera
в кодировщик, я также хотел бы отобразить предварительный просмотр на экране (так что пользователь может реально увидеть, что они кодируют). Если кодер не был задействован, я использовал быSurfaceView
, но это не работает в этом сценарии, так какSurfaceView
создает свой собственныйSurface
, и я думаю, что мне нужно использовать созданную с помощьюMediaCodec
.
Я искал в Интернете довольно много для решения и не нашел его. Некоторые примеры на bigflake.com кажутся шагом в правильном направлении, но они используют подход, который добавляет кучу накладных расходов EGL/SurfaceTexture, d хотел бы избежать. Я надеюсь, что есть более простой пример или решение, в котором я могу напрямую разговаривать с Camera
и MediaCodec
без участия EGL или текстур.