¿Cómo unir archivos ts en mp4 con ffmpeg?

¿Cómo unir archivos ts en mp4 con ffmpeg?

Descargo muchas transmisiones porque la velocidad de Internet es demasiado lenta para ver alta definición. Cuando descargo una transmisión, encuentro el archivo .m3u8 que apunta a los archivos TS. Luego uso el siguiente comando:

ffmpeg -i stream.m3u8 vid.mp4

Esto funciona. Pero lleva mucho tiempo porque básicamente recodifica todo, aunque ya tenga el formato correcto. Para evitar volver a codificar, puedo usar este comando:

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

Esto funciona bien cuando juego de principio a fin sin interrupciones. Pero cuando salto hacia atrás o hacia adelante, vlc tiene problemas para crear una imagen. No se puede mostrar correctamente durante unos segundos. Esto es muy molesto.

Mi pregunta:¿Cómo puedo crear el vídeo sin una recodificación completa, pero CON una buena representación VLC en cualquier momento?

Respuesta1

Le estás pidiendo a ffmpeg que codifique los archivos en mp4 en lugar de unirlos en una sola secuencia. Necesitasconcatenaren temp.tsy luego convertirlo en .mp4con -codec copy.

Además, creo que debes realizar la conversión adtsen aacel segundo paso -bsf:a aac_adtstoasc.

Respuesta2

Si no vuelve a codificar, es posible que no pueda cambiar los fotogramas clave, etc. del vídeo, lo que provocará el comportamiento que describe.

Sin embargo, podrías intentar algo como:

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

Ten en cuenta que lo que ganas en velocidad pierdes en calidad, por lo que "rápido" podría ser mejor...

Respuesta3

Ver mi variante con ffmpeg mp4joiner

Captura de pantalla

información relacionada