O que significa o sinalizador "-movflags frag_keyframe + vazio_moov"?

O que significa o sinalizador "-movflags frag_keyframe + vazio_moov"?

Ao codificar vídeo com FFMPEG que estou usando -movflags frag_keyframe+empty_moov- encontrei em algum lugar na rede - e ele me permite obter fluxo de vídeo mp4 (sem ele, recebo Could not write header for output file #0 (incorrect codec parameters ?)um erro se quiser transmitir a saída em algum lugar, mas funciona se eu passar o nome do arquivo de saída out.mp4para exemplo). Estou perguntando porque esse sinalizador também atrapalha meu vídeo de alguma forma e não consigo enviá-lo para o Twitter, por exemplo, ao usar esse sinalizador (sem ele, o Twitter aceita meu vídeo). Então isso atrapalha a codificação/formato ou qualquer outra coisa... existe alguma solução alternativa?

Responder1

Como afirmado aqui:https://stackoverflow.com/questions/8616855/how-to-output-fragmented-mp4-with-ffmpeg

  • frag_keyframe causa saída fragmentada,
  • vazio_moov fará com que a saída seja 100% fragmentada; sem isso, o primeiro fragmento será mixado como um curta-metragem (usando moov) seguido pelo resto da mídia em fragmentos

E nos documentos do FFmpeg você tem uma explicação sobre o que é fragmentação:https://www.ffmpeg.org/ffmpeg-formats.html#mov_002c-mp4_002c-ismv

Normalmente, um arquivo MOV/MP4 possui todos os metadados sobre todos os pacotes armazenados em um local (escritos no final do arquivo, ele pode ser movido para o início para melhor reprodução adicionando faststart aos movflags ou usando o qt-faststart ferramenta). Um arquivo fragmentado consiste em vários fragmentos, onde os pacotes e metadados sobre esses pacotes são armazenados juntos. Escrever um arquivo fragmentado tem a vantagem de que o arquivo é decodificável mesmo se a gravação for interrompida (enquanto um MOV/MP4 normal é indecodificável se não for finalizado corretamente) e requer menos memória ao gravar arquivos muito longos (já que a gravação de MOV normal Os arquivos /MP4 armazenam informações sobre cada pacote na memória até que o arquivo seja fechado). A desvantagem é que é menos compatível com outros aplicativos.

Responder2

Tentando usar isso:

-movflags faststart

informação relacionada