Bereiten Sie der MP4-Datei eine AAC-Datei vor, die dazu führt, dass das Audio nicht mehr synchron ist

814
Bill Bonar

Ich habe eine Anwendung, die das Normalisieren und Kombinieren von Audio- und Videodateien aus vielen verschiedenen Quellen übernimmt.

Alle eingehenden Audiodaten werden wie folgt normalisiert:

ffmpeg.exe -i "PathToIncommingAudioFile" -acodec aac -ac 2 -ar 44100 -ab 128k -strict experimental ""outputFile.aac" 

Alle eingehenden Videos werden wie folgt normalisiert:

ffmpeg.exe -i "PathToIncommingAudioFile" -s 852x480 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -vf ""scale=iw*min(852/iw\,480 /ih):ih*min(852/iw\,480 /ih),pad=852:480 :(852-iw)/2:(480 -ih)/2"" -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "outputFile.mp4" 

Jeder dieser Befehle (bitte verzeihen Sie schlechte Praktiken, dies ist nicht mein Fachgebiet), dient dazu, die Medien zu normalisieren, damit sie geräteübergreifend abgespielt werden können.


Anderer Code ermöglicht das erfolgreiche Zusammenführen von Audio zu Audio und Video zu Video. Wenn ich jedoch versuche, die beiden Elemente zusammenzuführen, wird das Audio nicht mehr synchronisiert.

Folgendes mache ich:

  1. Zuerst wird das Audio in eine Videodatei umgewandelt, wobei ein einfaches PNG-Bild als Plakat verwendet wird

    ffmpeg.exe -loop 1 -shortest -i "image.png" -i "normalized.aac" -s 852x450 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "audioAsVideo.mp4" 
  2. Als Nächstes wird versucht, die Videos auf dieselbe Weise zusammenzuführen, wie dies normalerweise der Fall ist. (Eine Lösung mit ffmpeg wurde nicht gefunden und dies funktioniert derzeit meistens.)

    mp4box.exe -cat "audioAsVideo.mp4" -cat "normalizedVideo.mp4" -new "CombinedVideo.mp4" 
  3. Neben einigen Videos mit nur einem Kanal-Audio (wie Webcams) wurde der folgende Hack / Fix hinzugefügt. Es läuft auf allen Video zu Video kombiniert und funktioniert normalerweise

    ffmpeg.exe -i "CombinedVideo.mp4" -c copy -ac 1 "SingleChannelCombinedVideo.mp4" 

Wenn dieser Vorgang mit einem Audio und einem Video durchgeführt wird, ist die Audiosynchronisierung der zweiten Datei deaktiviert. Wenn dies der Ton über dem Plakat ist, ist dies keine große Sache. Aber wenn es das Video ist, ist es sehr ablenkend.

  • Weiß jemand, was ich getan habe, das dies verursachen könnte?
  • Eine Idee, was man ändern soll?
  • Vielleicht eine Möglichkeit, einen Puffer zwischen den beiden zu stoßen, der die Synchronisation zurück zwingen würde?
  • Eine bessere Art, es zu tun?
2
@slhck würde das nicht das Audio vom Video durch das neue Audio ersetzen? Ich versuche nicht, Audio zu ersetzen, sondern nur zu verketten, und wenn es sich um Audio handelt, fügen Sie eine Placecard hinzu. Bill Bonar vor 11 Jahren 0
Gibt es einen Grund, warum Sie MPEG-4 Visual Video (`mpeg4` in FFmpeg) und nicht H.264 (` -c: v libx264` in FFmpeg) verwenden? Richtige ich also, dass "CombinedVideo" die Synchronisationsfehler anzeigt? slhck vor 11 Jahren 0
Bei der Erstellung dieses Features glaube ich, dass es für die Kompatibilität mit älteren Geräten ausgewählt wurde. Ich war an dieser Wahl nicht beteiligt. Ja, Sie sind korrekt. `CombinedVideo` zeigt den Synchronisierungsfehler an Bill Bonar vor 11 Jahren 0

0 Antworten auf die Frage