Cómo agregar un átomo MOOV en un archivo de video mp4

Estoy trabajando en el dispositivo vivo al servidor que fluye en androide. Puedo enviar datos en bytes en el servidor pero cuando juego ese archivo durante la grabación en el servidor VLC dicen que el átomo de MOOV no encontró. Después de una gran cantidad de solución encontré que MOOV átomo de un archivo mp4 genera al final. Pero tengo que jugar ese archivo en el servidor, mientras que la grabación significa en vivo. Voy a través del código fuente de SPYDROID y SIPDROID pero no de ellos está funcionando. Intenté agregar el átomo del movimiento en serveride usando FFMPEG pero no conseguí ningún éxito. Cualquiera tiene alguna idea de cómo puedo lograr esto. Thanx por adelantado.

Tienes un problema. El cuadro 'moov' es una especie de tabla de contenido. Si no todo el contenido está allí no puede tener una tabla completa de contenidos. ¡Ay!

Si usted quiere pegarse con MP4 y si usted está escribiendo el archivo usted mismo usted podría escribir el archivo como archivo fragmentado así llamado MP4. Un archivo MP4 fragmentado contiene múltiples fragmentos de vídeo independientes, cada uno con su propia tabla de contenido. Le permitirá reproducir el archivo antes de que finalice la grabación completa.

Si usted no necesita pegarse con MP4 una opción sería escribir la corriente sin procesar h264 al servidor. Entonces usted no tiene ese tipo de tabla de contenido. VLC puede reproducir corrientes h264 sin procesar.

Utilice MP4Box para mover el átomo MOOV al inicio del archivo y entrelazado para transmitirlo en trozos.

MP4Box test.mp4 test.mp4 

Ejecute qt_faststart para mover el átomo moov al comienzo de la secuencia.

 qt-faststart in.mp4 out.mp4 

Agregue a su gradle esta lib: compile 'net.ypresto.qtfaststartjava: qtfaststart: 0.1.0' y luego

 File input = new File(path + "/input.mp4"); // Your input file File output = new File(path + "/output.mp4"); // Your output file try{ if(!output.exists()) // if there is no output file we'll create one output.createNewFile(); } }catch (IOException e){ Log.e("TAG", e.toString()); } try{ QtFastStart.fastStart(input, output); // Adds moov to your input // Now your output file is ready to stream! }catch (QtFastStart.MalformedFileException m){ Log.e("QT", m.toString()); }catch (QtFastStart.UnsupportedFileException q){ Log.e("QT", q.toString()); }catch (IOException i){ Log.e("QT", i.toString()); } 

Aquí está todo

Es posible mover el átomo moov al comienzo del archivo de video usando FFMpeg.

 ffmpeg -i input_video_file.mp4 -vcodec copy -acodec copy -movflags +faststart output_video_file.mp4 
  • Moov átomo en android MeidaRecorder datos registrados
  • ¿Por qué mi aplicación Android dice "No se puede reproducir el vídeo" después de la reproducción?
  • Android: guarda una secuencia rtsp (h264) en un archivo mp4
  • Error de MediaPlayer de Android (1, -2147483648) CFContent MP4 Video
  • Mp4 vídeo en html5 etiqueta de vídeo no se reproduce en el cromo móvil y safari móvil
  • Convertir PCM a AAC o MP4 archivo sin MediaMuxer
  • Android MP4 stream - El video no se puede reproducir
  • Aplicación de falla en la fusión de videoclips MP4
  • Fusionar archivos de video mp4 en Android
  • ¿Cómo cargar videos de la carpeta de activos? (Para reproducirlas con VideoView)
  • Android: lee y escribe metadatos .mp4 -Tag
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.