Moov átomo en android MeidaRecorder datos registrados

Tengo un problema:

Grabo datos de la cámara usando MediaRecorder en mi aplicación de Android. Lo guardo en socket, no en archivo. La longitud de estos datos puede ser diferente. En el otro lado de la conexión de socket, lo guardo en el archivo. La conexión puede interrumpirse en cualquier momento inesperado. Tan después de la desconexión del zócalo del androide intento descodificar datos recibidos usando ffmpeg. Pero como he entendido, no puede encontrar moov átomo en este archivo. He leído alguna información sobre moov, así que creo que MediaRecorder pone atom moov en el final del archivo. Pero si se interrumpió la grabación, se omitió la escritura del átomo moov.

También he leído que para datos con longitud desconocida (carga progresiva, streaming) es posible escribir moov átomo al inicio del archivo.

¿Cómo escribir mis propios datos moov en el flujo? ¿Puedo usar MediaRecorder para esto? ¿O es necesario hacerlo manualmente? ¿Cómo generar datos moov válidos? Si alguien ya ha resuelto este problema, por favor, dame consejos ..

One Solution collect form web for “Moov átomo en android MeidaRecorder datos registrados”

El átomo 'moov' contiene la información que un jugador necesita para decodificar el medio. Para muchos formatos, un archivo mp4 o mov sin el átomo moov es sólo basura.

En la mayoría de los casos, el moov se anexa al final. Esto se debe a que el contenido del átomo moov no se puede predecir con antelación. Esto no es diferente si se coloca en el inicio y se actualiza continuamente. El beneficio de este último es que el archivo todavía puede reproducirse si el flujo se interrumpe o se detiene. En otras palabras, simplemente ponerlo en el comienzo no le ayudará, ya que todavía necesita actualizar en forma continua.

Lamentablemente, Android no está cerca de iOS cuando se trata de la manipulación de los medios de comunicación. Me sorprendería si encontraste una manera de resolver esto usando bibliotecas de Android. No tengo experiencia de MediaRecorder en particular, pero las clases de MediaCodec no ofrece nada sobre esto y después de un breve vistazo a la documentación de MediaRecorder, parece que el mismo problema aquí.

Ahora … las corrientes h264 se pueden reproducir sin un encabezado mp4 ya que contiene algunos metadatos propios. Esto permitirá que tu aplicación en el otro lado de la toma todavía utilice los datos. Puede utilizar ffmpeg para esto que está disponible para Android. Simplemente escriba los bytes en un archivo con una extensión .h264 y luego multiplexelo en un archivo mp4 después de que se haya completado la transferencia. Si tienes audio, lo mismo vale para eso.

EDIT: Si no puede enviar datos crudos h264, entonces lo encontrará en el átomo 'mdat' del archivo mp4, pero tendrá que manejar el audio por separado o no podrá decir audio y vídeo aparte.

  • ¿Cómo cargar videos de la carpeta de activos? (Para reproducirlas con VideoView)
  • Error de MediaPlayer de Android (1, -2147483648) CFContent MP4 Video
  • Metadatos de rotación de vídeo Mp4
  • Android: guarda una secuencia rtsp (h264) en un archivo mp4
  • Reproducir vídeo Mp4 desde el servidor android
  • Mediacodec jelly-bean
  • Cómo jugar RTSP stream video (MPEG4, baseline) de una cámara con videoview de Android?
  • Android, ¿cómo establecer los metadatos en el archivo MP4?
  • Android MP4 stream - El video no se puede reproducir
  • Android MediaCodec: Reduce el tamaño del video mp4
  • 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.