¿Qué significa el indicador "-movflags frag_keyframe+empty_moov"?

¿Qué significa el indicador "-movflags frag_keyframe+empty_moov"?

Al codificar video con FFMPEG que estoy usando -movflags frag_keyframe+empty_moov, lo encontré en algún lugar de la red, y me permite obtener una transmisión de video mp4 (sin él, aparece Could not write header for output file #0 (incorrect codec parameters ?)un error si quiero transmitir la salida a algún lugar, pero funciona si paso el nombre del archivo de salida out.mp4para ejemplo). Lo pregunto porque esta bandera también interfiere con mi video de alguna manera y no puedo subirlo a Twitter, por ejemplo, cuando uso esta bandera (sin ella, Twitter acepta mi video). Entonces se confunde con la codificación/formato o algo más... ¿hay alguna solución?

Respuesta1

Como se indica aquí:https://stackoverflow.com/questions/8616855/how-to-output-fragmented-mp4-with-ffmpeg

  • frag_keyframe provoca una salida fragmentada,
  • vacío_moov hará que la salida esté 100% fragmentada; sin esto, el primer fragmento se mezclará como una película corta (usando moov) seguido del resto del medio en fragmentos.

Y de los documentos de FFmpeg tienes una explicación sobre qué es la fragmentación:https://www.ffmpeg.org/ffmpeg-formats.html#mov_002c-mp4_002c-ismv

Normalmente, un archivo MOV/MP4 tiene todos los metadatos sobre todos los paquetes almacenados en una ubicación (escritos al final del archivo, se puede mover al inicio para una mejor reproducción agregando faststart a los movflags o usando qt-faststart herramienta). Un archivo fragmentado consta de varios fragmentos, donde los paquetes y los metadatos sobre estos paquetes se almacenan juntos. Escribir un archivo fragmentado tiene la ventaja de que el archivo es decodificable incluso si se interrumpe la escritura (mientras que un MOV/MP4 normal no se puede decodificar si no se termina correctamente) y requiere menos memoria al escribir archivos muy largos (ya que escribir archivos MOV normales Los archivos /MP4 almacenan información sobre cada paquete en la memoria hasta que se cierra el archivo). La desventaja es que es menos compatible con otras aplicaciones.

Respuesta2

Intentando usar esto en su lugar:

-movflags faststart

información relacionada