2012-04-22 16 views
6

Estoy tratando de escribir una aplicación que carga videos desde teléfonos Android, ya que se están grabando al leer el archivo .mp4 y subir los bytes, ya que se escriben en el archivo. El problema es que, por lo que puedo decir, el átomo moov y algunos otros datos variados no parecen escribirse en un archivo hasta que la grabación del video haya finalizado y el archivo de video haya sido cerrado. ¿Hay alguna manera de procesar el archivo de vídeo y añadir estos metadatos en el lado del servidor asumir cualquieraCómo cargar video desde un teléfono (n Android) mientras se está grabando

  1. El archivo de vídeo completo se ha cargado (pero sin el átomo moov o cualquier otro dato que no consigue escrito en la primer pase)
  2. Solo se ha subido una parte del video (por ejemplo, los primeros 10 segundos) y quiero convertir esto en un archivo mp4 válido que contenga el segmento de video subido.

he visto enlaces como http://www.mattakis.com/blog/kisg/20090708/broadcasting-video-with-android-without-writing-to-the-file-system pero pasar por alto el problema simplemente indicando

lo tanto, el flujo recibido tendrá que ser arreglado después de la grabación ha terminado, o el vídeo en bruto/audio los marcos deben ser procesados ​​por el servidor.

sin explicar exactamente cómo hacer eso.

Respuesta

4

Como habrás notado, el formato MP4 puede ser difícil de usar en tales situaciones. Sospecho que la publicación de blog vinculada no entra en detalles sobre la "reparación" porque puede ser bastante complicado. Además de escribir el campo de tamaño faltante del cuadro mdat, deberá generar los cuadros ftyp y moov. Si realmente necesita una solución MP4 integral, ISO 14496-12 y ISO 14496-14 le informarán más de lo que siempre quiso saber sobre cómo construir estas estructuras de datos.

Sin embargo, puede encontrar que una solución mucho más elegante es utilizar un formato que sea realmente adecuado para el procesamiento en tiempo real. En otras palabras, en el lado de Android, remueva la transmisión de video en un formato de tiempo real y envíela al servidor. En el lado del servidor, tiene una gran flexibilidad para procesar el video: puede volver a convertir todo el video en MP4, puede cortar y cortar, hacer fragmentos de 10 segundos, o lo que sea. El proyecto de código abierto Sipdroid contains some code que muestra remixing video en vivo en RTP. (Puede preferir un formato de transmisión confiable - RTP sobre TCP, o lo que sea - el principio es el mismo.)

+0

Gracias por el asesoramiento. Estoy mirando el proyecto ipcamera-for-android ahora, que usa FLV como el formato de transporte. Si no puedo hacer funcionar esa vía, echaré un vistazo a Sipdroid. – velocipedestrian

Cuestiones relacionadas