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