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.mp4
para 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