![como juntar arquivos ts em mp4 com ffmpeg?](https://rvso.com/image/1438514/como%20juntar%20arquivos%20ts%20em%20mp4%20com%20ffmpeg%3F.png)
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.ts
e depois converta isso em .mp4
with -codec copy
.
Além disso, acredito que você precise converter adts
para aac
na 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