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.
- ¿Cómo reproducir varios vídeos en una vista de lista con MediaPlayer?
- Biblioteca para apoyar H.264 AVC. Mp4 en Android 2.2, 2.3?
- ¿Cómo combinar múltiples archivos de audio en un momento específico con un archivo de vídeo en android?
- Android MediaCodec: Reduce el tamaño del video mp4
- Reproducción de un video local de aplicación (.mp4) en una vista web
- Error de codificación de vídeo que utiliza datos OnAudioFilterRead
- Android: no se puede reproducir vídeo mp4
- Apoye la velocidad de reproducción usando ExoPlayer
- Adición de un recurso de imagen sobre archivo de vídeo desde la tarjeta sd mediante ffmpeg o MediaMuxer para android
- Cómo jugar video .mp4 en videoview en android?
- Android, ¿cómo establecer los metadatos en el archivo MP4?
- Android VideoView error (1,16) y muestra la pantalla en negro
- Cómo reproducir vídeo mp4 con intención de mi aplicación Android? ¿Esto es posible?
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
- Biblioteca "libmaliinstr.so" no encontrado
- Error de OutOfMemory aunque la memoria libre está disponible