ffmpeg Stream Offset-Befehl (-itsoffset) funktioniert nicht

8

Ich würde es sehr schätzen, wenn jemand einige Hinweise bezüglich der Verwendung seines Offsets mit ffmpeg geben könnte. Ich habe eine Reihe von Beiträgen zu diesem Thema gelesen, einige von ihnen erklären sehr deutlich, wie Audio und Video mit -itsoffset synchronisiert werden, aber ich konnte es nicht zum Laufen bringen. Meine AVI-Datei wird mit ffmpeg in zwei Durchgängen mit dem folgenden Befehl für den zweiten Durchlauf codiert:

%Vor%

Aus irgendeinem Grund habe ich eine Verzögerung von 1 Sekunde im Video (oder der Ton ist 1 Sekunde früher). Es passiert nicht allzu oft, aber ich sehe es von Zeit zu Zeit. Unter anderen Versuchen habe ich Folgendes versucht:

%Vor%

Hier sind die Ergebnisse:

  1. Audio verstümmelt und nur 5m 35 s lang gegen 1h 41m.
  2. (Output.ac3 ist eine Audiokomponente von output.avi) Video und Audio identisch mit Original, Offset funktioniert nicht
  3. Audio wurde verschoben, aber originale Codierungsparameter wurden (wie erwartet) durch Standardwerte ersetzt.
  4. Audio verstümmelt und nur 9m 56s lang gegen 1h 41m.

Ich sehe, dass viele Leute den oben beschriebenen Prozess erklären und anscheinend verwenden, aber es scheint nicht für mich zu funktionieren. Fehle ich etwas Offensichtliches? Ich würde sehr gerne in der Lage sein, -itsoffset zu verwenden, da es sauberer ist als meine Problemumgehung.

FWIW, hier ist ein anderer und längerer Weg zum gewünschten Ergebnis:

Erstellen Sie zuerst eine verschobene Nur-Video-Datei mit -ss:

%Vor%

Extrahiere dann das Audio:

%Vor%

Und schließlich remux beide Komponenten:

%Vor%

Der Prozess funktioniert, ist schnell genug, aber ich würde wirklich lieber die One-Pass -itsoffset-Lösung verwenden.

    
jen 12.04.2012, 01:57
quelle

2 Antworten

4

Hier ist was ich getan habe und es funktioniert für mich

Die erste Eingabeeinstellung -i und der zweite Eingang stammen von derselben Videodatei.

Verzögere 1 Sekunde im ersten Eingangsvideo und dem zweiten Eingangsaudio einfach eine Kopie

%Vor%

Verzögere 1 Sekunde im zweiten Audio-Eingang und das erste Video-Eingangssignal mache einfach eine Kopie

%Vor%     
johnrock 21.06.2012 11:56
quelle
0

Das Problem liegt in -vcodec copy -acodec copy , da die Verschiebung nur bei Keyframes funktioniert. Ich hatte das gleiche Problem.

Kopiere einfach kein (Audio /) Video, probiere die Sache mit -itsoffset , aber benutze

%Vor%

zum erneuten Kodieren. Es sollte funktionieren.

    
gu471 12.07.2013 16:13
quelle

Tags und Links