Estoy tratando de utilizar el codificador de hardware H264
en Android para crear vídeo de la cámara, y el uso de FFmpeg
al mux en el audio (todo en el propio teléfono Android)Decode androide usando ffmpeg en tiempo real
Lo que he logrado hasta ahora es empaquetar el video H264
en paquetes rtsp
, y decodificarlo usando VLC (más de UDP
), así que sé que el video está al menos correctamente formateado. Sin embargo, tengo problemas para obtener los datos de video en ffmpeg
en un formato que pueda entender.
He intentado el envío de los mismos rtsp
paquetes a un puerto 5006 en el servidor local (a través de UDP), a continuación, proporcionando ffmpeg
con el archivo sdp
que le dice qué puerto local de la secuencia de vídeo está entrando en y cómo decodificar el video , si entiendo rtsp
transmitiendo correctamente. Sin embargo, esto no funciona y tengo problemas para diagnosticar por qué, ya que ffmpeg
está ahí esperando la entrada.
Por razones de latencia y escalabilidad, no puedo simplemente enviar el video y el audio al servidor y mux allí, tiene que ser hecho en el teléfono, de la manera más ligera posible.
Lo que creo que estoy buscando son sugerencias sobre cómo se puede lograr esto. La solución óptima sería enviar el video empaquetado H264
a ffmpeg
a través de una tubería, pero luego no puedo enviar ffmpeg
los parámetros del archivo sdp
que necesita para decodificar el video.
Puedo proporcionar más información bajo petición, como cómo se compila ffmpeg
para Android, pero dudo que sea necesario.
Oh, y la forma en que empiezo ffmpeg
es a través de la línea de comandos, realmente preferiría evitar hablar con jni si eso es posible.
Y la ayuda sería muy apreciada, gracias.
¿por qué está decodificando usando ffmpeg? use el objeto MediaPlayer incorporado –
¿Ha intentado usar live555 para transmitir la salida de ffmpeg a través de RTSP? Además, ¿no debería ffmpeg sondear la transmisión y descubrir la información del flujo en sí? – Shark
Creo que Aviad tiene la verdad. ¿Cómo sabes siquiera qué formato de video produce la cámara? –