¿Comando adecuado para remuxar mpeg-ts a mp4 con FFmpeg?

¿Debería usar un comando simple como este:

ffmpeg -i C:\video_input.ts -c:v copy -c:a copy -bsf:a aac_adtstoasc C:\video_output.mp4

pero he visto que muchos -copytslo usan, ¿por qué es necesario? No entiendo completamente su documentación.

ffmpeg -i C:\video_input.ts -c:v copy -c:a copy -bsf:a aac_adtstoasc -copyts C:\video_output.mp4

y también cada vez que uso -copytshay un retraso adicional antes de que comience el primer cuadro, por lo que arreglar esto es seguro de usar -start_at_zeroo rompe el punto de las copias hasta cierto punto (si eso tiene algún sentido)?

ffmpeg -i C:\video_input.ts -c:v copy -c:a copy -bsf:a aac_adtstoasc -copyts -start_at_zero C:\video_output.mp4

¡Gracias!

Respuestas (1)

A menos que sepa que tiene una necesidad específica de conservar las marcas de tiempo, no es necesario utilizar -copyts. MPEG-TS, al ser un formato utilizado para la visualización remota, tendrá una compensación de tiempo de inicio, de forma predeterminada, para permitir el almacenamiento en búfer en el lado del reproductor. MP4 para reproducción local, no lo necesita, copytslo conservará.

pero ¿cuál es la diferencia entre no -copytsy -copyts+ -start_at_zero? ¿Hay alguna necesidad de ello, por qué existe?
start_at_zeroes relevante si está buscando en la entrada, es decir -ss 10, normalmente, el primer cuadro buscado tiene su TS restablecido a cero. Con s_a_0, su TS ahora será 10. Si se usa con copyts, ese TS se transmitirá a la salida.
Pensé que querías decir que si tengo -ss 10un archivo .ts, en realidad será ss @ 11.4 (1.4 de retraso desde ts), pero si uso -ss 10 con s_a_0, ¿comenzará en 10? Cuando revisé, esto no tiene sentido ya que no es lo que está sucediendo. El archivo .ts original tenía inicio: 1.4, al pasar por debajo -ss 10, ese mismo tenía un inicio de 0.0480, lo mismo si le agregaba start_at_zero, o copyts y start_at_zero.
Digamos que su MPEG-TS tiene una hora de inicio de 15 y una duración de 10 s, y su códec está intracodificado, por lo que no tenemos que preocuparnos por GOP. Con -ss 3 -i in.ts -c copy out.mp4, el primer cuadro buscado tiene PTS de 0 después de la etapa de demuxer, y out.mp4 tiene un tiempo de inicio de 0. Con -ss 3 -copyts -i in.ts -c copy out.mp4, el primer cuadro buscado tiene PTS de 18 después del demuxer, que se transfiere durante mux en out.mp4. Con -ss 3 -start_at_zero -copyts -i in.ts -c copy out.mp4, el primer cuadro buscado tiene PTS de 3 después del demuxer, que se transfiere durante mux en out.mp4.
gracias por la aclaración adicional. Ahora, para concluir, siguiendo su respuesta original: ¿en qué caso exacto en el que solo quiero remuxar un archivo, de .ts a un contenedor .mp4 sin perder calidad, será necesario incluirlo -copyts? Y si lo necesito en ciertas situaciones, ¿no es siempre mejor incluir s_a_0 si no quiero tener ese "buffering" en mi nueva salida .mp4?
Nunca debería necesitar copyts al copiar en un MP4. Deje que ffmpeg genere nuevas marcas de tiempo. Las marcas de tiempo no tienen impacto en la calidad del video/audio.
¿Qué pasa con la sincronización de audio/video? ¿O eso es (iirc) solo después de la marca de 26 horas: algo: algo?
Normalmente no es un problema, pero no sé el estado actual de cómo ffmpeg maneja el traspaso de PTS en la marca de 26 horas. Actualización: al parecer, no muy bien .
Entonces, teniendo en cuenta lo que dijo una de las personas en los comentarios de su enlace, volviendo a una de mis preguntas, ¿hay algo malo o negativo en usar ambos -copytsy -start_at_zeroen cualquier archivo .ts siempre que se trate de un remux .ts a . mp4? Perdón por ser tan molesto con las preguntas, pero muchas gracias por ser aún más coherente con todas las respuestas, de verdad.
Todo lo que copyts + sa0 logrará es que la hora de inicio del MP4 represente el desplazamiento de la parte recortada dentro del archivo de origen, pero la identidad del archivo de origen o el comando utilizado para generarlo no se llevará a cabo. A menos que sepa que lo necesita, ¿por qué molestarse?
bueno, no estaba seguro, tengo grabaciones de transmisiones, twitch.tv en su mayoría que están en formato .ts, así que no estaba seguro de si causaría algún problema, pero sí, si tú lo dices, las remultiplicaré todas desde . ts a mp4 con -c:v copy -c:a copy -bsf:a aac_adtstoascsin -copytso sa0. Estaba muy interesado en el aspecto detrás de escena, si no usar copyts genera un nuevo TS apropiado por sí mismo, ¿puede perderse la sincronización antes de las 26 horas y todas esas cosas de las que no tenía idea?