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.ts
y luego convertirlo en .mp4
con -codec copy
.
Además, creo que debes realizar la conversión adts
en aac
el 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