Edición de VOB con FFMPEG

Leí que es mejor extraer de los archivos vob H264 dentro de un .ts para tener una muestra más precisa y sin pérdidas, fácil de cortar, ¿es correcto?

Usé estos comandos:

ffmpeg -i VTS_01_1.VOB  -acodec libfaac -aq 100 -ac 2 -vol 2048 -vcodec libx264 -preset veryslow -crf 18 -threads 2 manu1.mp4

ffmpeg -i manu1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts

Extraje dos muestras de video del archivo .ts intermedio con ese tipo de comando:

ffmpeg -ss 43 -i intermediate1.ts -vcodec copy -vframes 1400 -acodec copy 1-manubus.ts

si reproduzco por separado estos archivos .ts en vlc, ambos están completamente decodificados, no faltan marcos

Finalización :

ffmpeg -analyzeduration 200M -probesize 150M -i "concat:1-manubus.ts|2-manuchoisit.ts" -c:v libx264 -crf 18 -preset slow -bsf:a aac_adtstoasc -force_key_frames 0 1990-Manu_Redpants.mp4 

Pero luego, cuando reproduzco el archivo final, los primeros 6 segundos son un cuadro congelado y luego vienen las transmisiones de audio y video perfectamente sincronizadas hasta el final. Si reproduzco la primera parte 1-manubus.ts, los 6 primeros segundos existen y no faltan, ¿qué sucede? ¿Algo relacionado con el primer cuadro que no son los cuadros I?

Incluya la salida completa de la consola de cada comando.

Respuestas (2)

En el primer paso, está realizando una conversión con pérdida, transcodifica de vob a mp4 y luego a ts. Para una re-multiplexación sin pérdidas, solo debe re-multiplicar, mejor especificar tanto el video como el audio:

ffmpeg -i VTS_01_1.VOB -c:v copy -c:a copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts

Sin embargo, si vuelve a multiplexar con el fin de cortar, debe tener en cuenta que con este método solo es posible en el límite exacto del fotograma clave, por lo que es posible que desee reconsiderar si desea hacerlo de esta manera. Para obtener una explicación detallada, consulte esta respuesta .

Después de leer el enlace de su interesante artículo, y como quiero cortar con precisión los extractos, entiendo que debería haber colocado -ss después de -i input_file.mp4, y esto será particularmente lento, ¿lo confirma?
Sí, la transcodificación requiere más tiempo y también cierta pérdida de calidad, pero le brinda un mejor control sobre el resultado. Si desea un corte preciso, debe operar en el archivo VOB original, colocando -ss y -t antes del archivo de salida (en su caso, parece lo mismo que colocar después del archivo de entrada, pero para ser precisos, queremos que se salte) hacerse mientras se produce la salida). Debe generar archivos TS para no transcodificar durante la concatenación. Una vez que tenga todos sus segmentos, puede fusionarlos y convertir la película fusionada en el mp4 final sin ninguna transcodificación adicional.
Obtendrá mejores resultados (evitando fallas en la marca de tiempo/av-sync) usando herramientas de DVD para obtener un .ts de una colección de archivos .VOB/.IFO. como mplayer -dumpfile title1.ts -dvd-device /path/to/the/dir dvd://1pienso Olvidé qué comando solía usar para esto. >.<
Encontré el comando que he usado antes para descargar un .ts para un título de DVD: tccat, del transcodepaquete. Debería ser equivalente a cualquier otra cosa que sepa sobre estructuras de DVD, y no solo acceder a los VOB directamente.

Finalmente lo hice funcionar empalmando directamente los archivos VOB con los siguientes comandos:

ffmpeg -i VTS_01_2.VOB -ss 463 -c copy -vframes 325 2-manuchoisit.vob

ffmpeg -i VTS_01_2.VOB -ss 353 -t 16 -c copy 3-manutombe.vob

y luego concatenar los extractos y convertir con

ffmpeg -analyzeduration 200M -probesize 150M -i "concat:1-manubus.vob|2-manuchoisit.vob|3-manutombe.vob" -vcodec libx264 -preset veryslow -crf 18 -acodec libfaac -aq 100 -ac 2 -vol 2048 1990-Manu_Redpants.mp4

Sin pérdida de fotogramas, cortes precisos.