Utilice MediaCodec para la transmisión H264

Actualmente estoy tratando de usar Android como un punto final de Skype. En esta etapa, necesito codificar video en H.264 (ya que es el único formato compatible con Skype) y encapsularlo con RTP para hacer que la transmisión funcione.

Aparentemente elMediaRecorder no es muy adecuado para esto por varias razones. Una es porque agrega los encabezados MP4 o 3GP una vez que se termina. Otro es porque para reducir la latencia a un mínimo, la aceleración de hardware puede ser útil. Por eso me gustaría hacer uso de las recientes adiciones de bajo nivel al marco, siendoMediaCodec, MediaExtractor, etc.

En este momento, planeo trabajar de la siguiente manera. La cámara escribe su video en un búfer. El MediaCodec codifica el video con H264 y escribe el resultado en otro búfer. Este búfer es leído por un encapsulador RTP, que envía los datos de flujo al servidor. Aquí está mi primera pregunta: ¿te parece factible este plan?

Ahora ya estoy atascado con el paso uno. Dado que toda la documentación en Internet sobre el uso de la cámara hace uso deMediaRecorder, No puedo encontrar una manera de almacenar sus datos en bruto en un búfer antes de codificar. EsaddCallbackBuffer adecuado para esto? ¿Alguien tiene un enlace con un ejemplo?

A continuación, no puedo encontrar mucha documentación sobre MediaCodec (ya que es bastante nuevo). ¿Alguien que tenga un tutorial sólido?

Por último: ¿alguna recomendación sobre bibliotecas RTP?

¡Muchas gracias por adelantado!

Respuestas a la pregunta(3)

Su respuesta a la pregunta