2012-04-12 15 views
8

Apprezzerei molto se qualcuno potesse fornire alcuni suggerimenti sull'uso di itsoffset con ffmpeg. Ho letto una serie di post su questo argomento, alcuni spiegano molto chiaramente come sincronizzare nuovamente audio e video con -itsoffset, ma non sono riuscito a farlo funzionare. mio file avi è codificato con ffmpeg, in due passaggi, utilizzando il seguente comando per il secondo passaggio:comando offset ffmpeg stream (-itsoffset) non funzionante

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 

Per una qualche ragione, io alla fine con un ritardo di 1 secondo nel video (o l'audio è 1 sec presto). Non succede spesso ma lo vedo di tanto in tanto. Tra gli altri tentativi, ho provato quanto segue:

(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 

Ecco i risultati:

  1. Audio incomprensibili ed a soli 5 m 35 s lunghe vs 1h 41m.
  2. (Output.ac3 è componente audio di output.avi) Video e audio identici all'originale, offset non ha funzionato
  3. Audio hanno ottenuto spostati, ma i parametri di codifica originale sostituiti con quelli di default (come previsto).
  4. Audio distorto e solo 9m 56s lungo vs. 1h 41m.

Vedo che molte persone spiegano, e apparentemente usano il processo descritto sopra, ma non sembra funzionare per me. Mi manca qualcosa di ovvio? Mi piacerebbe molto essere in grado di usare -itsoffset in quanto è più pulito della mia soluzione alternativa.

FWIW, ecco un modo diverso, e più a lungo per ottenere il risultato desiderato:

Innanzitutto creare un video spostato il file utilizzando solo -ss:

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

quindi estrarre l'audio:

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

E infine remux entrambe le componenti:

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

Il processo funziona, è abbastanza veloce, ma io preferirei davvero utilizzare la soluzione one-passoffset.

+0

C'è un [bug aperto] (http://roundup.libav.org/issue359) con il flag '-itsoffset' che potrebbe avere qualcosa a che fare con i problemi che stai vedendo. D'altra parte, l'audio confuso e troncato suona come qualcosa di più serio è sbagliato. Se questo è ancora un problema, quale versione di FFmpeg stai usando? – blahdiblah

risposta

4

Ecco quello che ho fatto e il lavoro per me

Il primo ingresso impostazione -i ed il secondo ingresso è venuto dallo stesso file un video.

Delay 1 secondo nel primo video in ingresso ed il secondo ingresso audio basta fare 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" 

Ritardo 1 secondo in secondo audio in ingresso e il primo video in ingresso solo fare 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

Il problema si trova su -vcodec copy -acodec copy perché lo spostamento funziona solo sui fotogrammi chiave. Ho avuto lo stesso problema.

Basta non copiare (audio /) video, prova la cosa con -itsoffset, ma utilizzare

-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 

per la ri-codifica. Dovrebbe funzionare.

Problemi correlati