2012-04-12 14 views
8

Realmente apreciaría si alguien pudiera dar algunos consejos sobre el uso de itsoffset con ffmpeg. He leído varias publicaciones sobre este tema, algunas de ellas explican muy claramente cómo volver a sincronizar el audio y el video con -offset, pero no he podido hacer que funcione. Mi archivo AVI está codificado con ffmpeg, en dos pasadas, con el siguiente comando para la segunda pasada:Comando ffmpeg stream offset (-itsoffset) no funciona

ffmpeg -i whole-vts_01.avs -pass 2 -y -vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k output.avi 

Por alguna razón, termino con un retraso de 1 segundo en el video (o el audio es 1 sec temprano). No sucede con demasiada frecuencia, pero lo veo de vez en cuando. Entre otros intentos, he intentado lo siguiente:

(1) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.avi -vcodec copy -acodec copy -map 0:0 -map 1:1 output-resynched.avi 
(2) ffmpeg -i output.avi -itsoffset 00:00:01.0 -i output.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched2.avi 
(3) ffmpeg -itsoffset -00:00:01.00 -i output.avi output-resynched8.avi 
(4) ffmpeg -i output.avi -itsoffset -1.0 -i output.avi -vcodec copy -acodec copy -map 0:1 -map 1:0 output-resynched13.avi 

Éstos son los resultados:

  1. audio confusas y sólo 5 m 35 s largos vs. 41m 1h.
  2. (Output.ac3 es componente de audio de output.avi) de vídeo y de audio idéntico al original, desplazamiento no funcionó
  3. audio se llevaban cambiaron, pero los parámetros de codificación originales reemplazados por falta de pago (como se esperaba).
  4. Audio distorsionado y solo 9m 56s de largo vs. 1h 41m.

Veo que muchas personas explican, y aparentemente utilizan el proceso descrito anteriormente, pero no parece funcionar para mí. ¿Me estoy perdiendo algo obvio? Me gustaría poder usar -soffset ya que es más limpio que mi solución alternativa.

Fwiw, aquí hay una manera diferente, y ya de obtener el resultado deseado:

En primer lugar crear un video desplazado archivo de sólo usando -SS:

ffmpeg -i output.avi -ss 1.0 -vcodec copy -an oupput_videoshifted.avi 

a continuación, extraer el audio:

ffmpeg -i output.avi -vn -acodec copy outputaudioonly.ac3 

Y finalmente Remux dos componentes:

ffmpeg -i output_videoshifted.avi -i output_audioonly.ac3 -vcodec copy -acodec copy -map 0:0 -map 1:0 output-resynched14.avi 

El proceso funciona, es lo suficientemente rápido, pero realmente preferiría usar la solución one-put -setoffset.

+0

Hay un [error abierto] (http://roundup.libav.org/issue359) con el indicador '-itsoffset' que podría tener algo que ver con los problemas que está viendo. Por otro lado, el audio truncado y distorsionado parece que algo más serio está mal. Si esto sigue siendo un problema, ¿qué versión de FFmpeg estás usando? – blahdiblah

Respuesta

4

Esto es lo que hice y que funcione para mí

La primera señal de la entrada -i y la segunda entrada ha venido desde el mismo archivo de vídeo.

Delay 1 segundo en el primer vídeo de entrada y la segunda entrada de audio simplemente hacer una copia

ffmpeg -y -itsoffset 00:00:01.000 -i "d:\Video1.mp4" -i "d:\Video1.mp4" 
-map 0:v -map 1:a -vcodec copy -acodec copy 
-f mp4 -threads 2 -v warning "Video2.mp4" 

Delay 1 segundo en segundo audio de entrada y el primer vídeo de entrada simplemente hacer una copia

ffmpeg -y -i "d:\Video1.mp4" -itsoffset 00:00:01.000 -i "d:\Video1.mp4" 
-map 0:v -map 1:a -vcodec copy -acodec copy 
-f mp4 -threads 2 -v warning "Video2.mp4" 
0

El problema se encuentra en -vcodec copy -acodec copy porque el cambio solo funcionará en fotogramas clave. He tenido el mismo problema.

Eso sí, no copiar (audio /) de vídeo, tratan el asunto con -itsoffset, pero el uso

-vcodec libxvid -vtag XVID -b:v 1300K -g 240 -trellis 2 -mbd rd -flags +mv4+aic -acodec ac3 -ac 2 -ar 48000 -b:a 128k 

para la re-codificación. Deberia de funcionar.