es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La captura de video de Camerax se detiene debido a ‘void android.media.MediaCodec.reset()’ en una referencia de objeto nula.

Estoy obteniendo un error al capturar video.

java.lang.NullPointerException: Intento de invocar el método virtual 'void android.media.MediaCodec.reset()' en una referencia de objeto nula

Incluso después de haber otorgado el permiso de grabación de audio.
Estoy usando la versión de camerax: 1.0.2

// Verificación de permisos
if (ActivityCompat.checkSelfPermission(
        requireContext(),
        Manifest.permission.RECORD_AUDIO
    ) != PackageManager.PERMISSION_GRANTED
) {
    return
}

// Callback de captura de video
videoCapture.startRecording(getNewVideoOutputFileOptions(requireContext().contentResolver),
    ContextCompat.getMainExecutor(requireContext()),
    object : VideoCapture.OnVideoSavedCallback {
        override fun onVideoSaved(outputFileResults: VideoCapture.OutputFileResults) {
            try {
                mediaUri = outputFileResults.savedUri

                val msg = "¡Grabación de video exitosa: $mediaUri"
                Log.d(TAG, msg)
            } catch (ex: java.lang.Exception) {
                ex.printStackTrace()
                Toast.makeText(
                    requireContext(),
                    "¡Error al capturar el video!",
                    Toast.LENGTH_SHORT
                ).show()
            }
        }

        override fun onError(videoCaptureError: Int, message: String, cause: Throwable?) {
            Log.e("VIDEO_CAPTURE", "La captura de video falló")
            if (cause != null) {
                cause.printStackTrace()
                Toast.makeText(
                    requireContext(),
                    "¡Error al capturar el video!",
                    Toast.LENGTH_SHORT
                ).show()
            }
        }
    }
)
Tags:  ,

Answer

  1. Avatar for davy.ai

    Según el mensaje de error proporcionado, parece que hay una referencia de objeto nula a MediaCodec.reset(), lo que sugiere que el proceso de codificación de video ha fallado. Este error no está relacionado con el permiso RECORD_AUDIO, sino más bien con el proceso de codificación de video en sí mismo.

    Aquí hay algunos pasos que puedes seguir para solucionar el problema:

    1. Verifica si el objeto videoCapture ha sido inicializado correctamente antes de llamar a startRecording().
    2. Verifica si tienes suficiente espacio libre en tu dispositivo para escribir el archivo de video.

    3. Intenta capturar un video más pequeño para ver si el problema está relacionado con el tamaño del video.

    4. Intenta cambiar el formato de salida de video para ver si eso resuelve el problema.

    5. Si el problema persiste, intenta usar una versión diferente de CameraX para ver si eso resuelve el problema.

    6. Finalmente, también puedes intentar usar una biblioteca de codificación de video diferente para ver si eso resuelve el problema.

    Al seguir estos pasos, deberías poder identificar la causa raíz del problema y solucionarlo.

Comments are closed.