¿Cómo puedo alimentar unidades H.264 NAL a Android MediaCodec para la decodificación?

Estoy tratando de averiguar cómo usar la clase MediaCodec de Android para decodificar el vídeo H.264. Para empezar, estoy tratando de analizar manualmente las unidades NAL fuera de un archivo H.264 y alimentarlos a MediaCodec para la decodificación. Creo que estoy analizando las unidades NAL fuera del archivo correctamente (la búsqueda de 0x00 0x00 secuencia 0x01 en el archivo, indica el inicio de una unidad NAL), pero MediaCodec siempre veces fuera y devuelve -1 cada vez que hago una llamada a dequeueOutputBuffer (). ¿Alguien sabe las especificaciones de cómo alimentar unidades H.264 NAL a MediaCodec para la decodificación? ¿Se supone que debo quitar la secuencia 0x00 0x00 0x01 antes de enviar una unidad NAL? ¿Necesito ignorar / eliminar ciertos tipos de unidades NAL? ¿Necesito agregar previamente la información SPS y PPS extraída (con o sin la secuencia 0x00 0x00 0x01) antes de cada unidad NAL? Estoy jugando con un montón de ideas aquí y ninguno de ellos es panning. Cualquier orientación en este ámbito sería muy apreciada.

2 Solutions collect form web for “¿Cómo puedo alimentar unidades H.264 NAL a Android MediaCodec para la decodificación?”

En cuanto a lo que he experimentado, el decodificador volverá -1 en dequeueOutputBuffer () siempre y cuando no se le da el sps / pps info. Cuando lo hace, el decodificador debe devolver con el indicador INFO_OUTPUT_FORMAT_CHANGED (-2) en dequeueOutputBuffer () y, después de eso, devolverá correctamente tramas descodificadas.

Si el decodificador todavía devuelve -1, intente agregar la información sps / pps al decodificador con el indicador BUFFER_FLAG_CODEC_CONFIG.

AFAIK usted necesita tomar la cabecera hacia fuera tan bien como la alimentación él con SPS / PSS como primeros amortiguadores, pero conseguir -1 no es una gran cosa que será un behaivour normal. Algunos dispositivos se bloquean si no son alimentados por SPS / PPS antes de que los otros NAL

  • FFMpeg Android Stagefright SIGSEGV error (decodificación h264)
  • Soporte de nivel de perfiles de Android H.264
  • Cómo codificar Bitmaps en un video usando MediaCodec?
  • No se pueden reproducir ciertos videos
  • Utilizar FFMPEG en Android
  • Cómo utilizar MediaCodec sin MediaExtractor para H264
  • Decodificación h264 ByteStream en Android siempre obtiene INFO_TRY_AGAIN_LATER de dequeueOutputBuffer ()
  • Error de codificación de vídeo que utiliza datos OnAudioFilterRead
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.