como juntar arquivos ts em mp4 com ffmpeg?

como juntar arquivos ts em mp4 com ffmpeg?

Eu baixo muitos streams porque a velocidade da internet é muito lenta para assistir em alta definição. Quando faço download de um stream, encontro o arquivo .m3u8 que aponta para os arquivos TS. Então eu uso o seguinte comando:

ffmpeg -i stream.m3u8 vid.mp4

Isso funciona. Mas leva muito tempo porque basicamente recodifica tudo, mesmo que já esteja no formato certo. Para evitar a recodificação, posso usar este comando:

ffmpeg -i stream.m3u8 -vcodec copy -acodec copy vid.mp4

Isso funciona bem quando jogo do início ao fim sem interrupções. Mas quando pulo para trás ou para frente, o vlc tem problemas para criar uma imagem. Ele não pode ser exibido corretamente por alguns segundos. Isso é muito chato.

Minha pergunta:Como posso criar o vídeo sem recodificação completa, mas COM boa renderização vlc a qualquer momento?

Responder1

Você está pedindo ao ffmpeg para codificar os arquivos em mp4, em vez de juntá-los em um único fluxo. Você precisaconcatenarinto temp.tse depois converta isso em .mp4with -codec copy.

Além disso, acredito que você precise converter adtspara aacna segunda etapa -bsf:a aac_adtstoasc.

Responder2

Se você não recodificar, talvez não consiga alterar os quadros-chave, etc. do vídeo, resultando no comportamento que você descreve.

Você poderia tentar algo como:

ffmpeg -i stream.m3u8 -codec:v "libx264" "-preset" "ultrafast" output.mp4

Tenha em mente que o que você ganha em velocidade você perde em qualidade, então "rápido" pode ser melhor...

Responder3

Veja minha variante com ffmpeg mp4joiner

Captura de tela

informação relacionada