Convertir secuencias de entrada de vídeo a RTMP
Quiero transmitir la grabación de vídeo desde mi teléfono Android a servidor de medios de red.
El primer problema es que al configurar la salida de MediaRecorder
en el socket, faltan algunos mdat
tamaño mdat
. Esto se puede corregir preprocesando ese flujo localmente y agregando datos faltantes al flujo para producir un flujo de salida válido.
- Android no puede reproducir vídeo H264 / AAC
- Los videos de incrustación de YouTube no funcionan en la vista web. ¿Qué tiene de malo este código?
- Cómo implementar el chat de voz y video
- Vídeo inverso en android
- Reproducción de vídeo a cámara lenta en android
La cuestión es cómo proceder desde allí.
¿Cómo puedo realizar la salida de ese flujo como un flujo RTMP?
- Reproducir Youtube HTML5 incrustado de vídeo en Android WebView
- Detectar la máxima resolución de vídeo compatible con un dispositivo móvil en un sitio web que responda
- Intención de tomar video en android
- Buscando un ejemplo de trabajo de addTimedTextSource para agregar subtítulos a un video desde un archivo .srt en Android 4.1
- Extraer fotogramas de vídeo en Android
- Vídeo incrustado HTML5 de Android
- Detectar la orientación de un vídeo grabado en android
- Configuración de encabezados para streaming de vídeo mp4 y reproducción de archivos con Exoplayer
En primer lugar, vamos a desenrollar su pregunta. Como usted ha supuesto, actualmente RTMP no es compatible con Android. Puede utilizar algunas bibliotecas laterales para agregar soporte, pero éstas pueden no ser implementaciones completas o tener otros efectos secundarios e insectos indeseables que causan que no cumplan con sus necesidades.
La alternativa común en este caso es usar RTSP . Proporciona un formato de sesión comparable que tiene su propio RFC , y su estructura de paquetes cuando se combina con RTP es muy similar (sans algunos detalles) a su protocolo deseado. Usted podría realizar las correcciones necesarias aquí para transmutar RTP / RTSP en RTMP, pero como se mencionó, tal esfuerzo está actualmente fuera del alcance de desarrollo de su aplicación.
Por lo tanto, supongamos que le gustaría usar RTMP ( invalidando este hilo ) y que la biblioteca vinculada anteriormente no satisface sus necesidades.
Por ejemplo, puede seguir este tutorial para grabar y reproducir utilizando Livu, Wowza y Adobe Flash Player, hablando con los desarrolladores de Livu sobre la licencia de su cliente. O bien, puede utilizar esta biblioteca de cliente y su ejemplo completo de grabador de Android para crear su cliente.
Para resumir:
RTSP
- Este hilo , utilizando Darwin Media Server , Servicios de Windows Media o VLC
RTMP
- Esta biblioteca ,
- Este hilo y este tutorial , usando Livu , Wowza y Adobe Flash Player
- Esta biblioteca cliente y esta grabadora de ejemplo
Mucha suerte con su aplicación. Admito que tengo una comprensión menos que comprensiva de todas estas bibliotecas, pero éstas parecen ser las soluciones estándares en este espacio en el momento de esta escritura.
Editar:
Según el OP, caminar el conjunto de la biblioteca RTMP:
- Esta biblioteca : No podía hacer funcionar las demostraciones de la biblioteca. Más importante aún, la funcionalidad de RTMP es incompleta.
- Este hilo y este tutorial , usando Livu , Wowza , y Adobe Flash Player : Este tiene un largo tutorial sobre cómo consumir video, pero su tutorial sobre la publicación es potencialmente lacónico e insuficiente.
- Esta biblioteca de cliente y esta grabadora de ejemplo : El ejemplo dado sólo cubre la publicación de audio. Se necesita más trabajo para hacer esto completo.
En resumen: se necesita más trabajo. Otras respuestas, y mejoras en estos ejemplos, son lo que se necesita aquí.
Si está utilizando un navegador web en un dispositivo Android, puede utilizar WebRTC para la captura de vídeo y la grabación en el servidor, es decir, con Web Call Server 4
Así, el camino completo sería:
Android Chrome [WebRTC]> WCS4> grabación
Así que no necesita el protocolo RTMP aquí.
Si está utilizando una aplicación RTMP independiente, puede utilizar cualquier servidor RTMP para la grabación de vídeo. Como sé Wowza soporta la grabación H.264 + Speex.
- ¿Cómo configurar la altura de la barra de progreso de Android?
- Esperando que el dispositivo de destino se conecte en línea