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