Ich sage nicht, dass es eine allgemeine Regel dafür gibt. Es kann wie V0 A0 V1 A1 V2 A2 oder V0 V1 A01 V2 V3 A23 sein. Das genau davon sollte von der Komprimierung und der Qualität von Video und Audio abhängen. Die einzige tatsächliche Regel ist, dass sowohl der Videostrom von Frames (V0, V1 usw.) als auch der entsprechende Audiostrom von Blöcken (A0, A1 usw.) Ganzzahlen sein müssen.
Wie ist mpeg verschachtelt?
Ich muss wissen, nach wie vielen Videoframes der Audioteil für eine MPEG-Datei beginnt. Zum Beispiel gibt es zunächst 5 Videoframes und danach 10 Audio-Samples. Dies würde für die gesamte Datei wiederholt werden.
Extra: Gibt es eine Möglichkeit, diese Informationen in ffmpeg zu setzen?
EDIT: Weitere Informationen
Ich habe einen Videostream im RGBA-Format. Diese Frames werden in den Encoder geschrieben.
Ich habe auch einen Audiostream im s16le-Format, den ich dem Encoder zuführen möchte.
Wenn ich den Videostream im RGBA-Format verwende und ihm eine normale WAV-Datei als Audio hinzufüge, funktioniert alles einwandfrei. Ich muss jedoch meinen eigenen Audiostrom hinzufügen. Wenn ich dies versuche, bekomme ich kein Audio und das Video ist defekt. Es gleitet von rechts nach links und von oben nach unten. Der Teil des Frames, der herunterfällt, wird auf der anderen Seite gerendert (z. B. befindet sich der Frame 20px nach rechts, der 20px, der heruntergefallen ist, wird auf der linken Seite gerendert).
Ich denke, ich muss herausfinden, in welcher Reihenfolge ich meinen Audiostream in den Encoder schreiben muss. Dieser Teil des Konsolenbefehls verwaltet mein Audio:
-f s16le -ac 1 -i -
Als ich es mit einer normalen .wav-Datei versuchte, schrieb ich gerade
-i file_name.wav
Ich hoffe, das macht es etwas klarer.
WEITERE BEARBEITUNG:
Ich schreibe derzeit 18 Frames an den Encoder und danach schreibe ich 18 Frames Audio-Samples an den Encoder. Das wiederholt sich. Wenn ich auf eine niedrigere Frequenz gehe, bekomme ich grüne Blitze im Video
FFMPEG BEFEHL:
ffmpeg -r 24 -pix_fmt rgba -s 1280x720 -f rawvideo -y -i - -f s16le -ac 1 -i - -vf vflip -vcodec mpeg1video -qscale 4 -bufsize 500KB -maxrate 5000KB OUTPUT_FILE
2 Antworten auf die Frage
Sie schreiben sowohl die Audio- als auch die Videodaten in den gleichen Eingangsstrom. FFMPEG muss die beiden Streams voneinander trennen, damit sie ordnungsgemäß multiplext werden können. Ich würde nachsehen, Named Pipes zu verwenden, um zwei getrennte Streams an FFMPEG zu übergeben. Etwas wie das:
ffmpeg -r 24 -pix_fmt rgba -s 1280x720 -f rawvideo -y -i \\.\pipe\videopipe -f s16le -ac 1 -i \\.\pipe\audiopipe -vf vflip -vcodec mpeg1video -qscale 4 -bufsize 500KB -maxrate 5000KB OUTPUT_FILE
Verwandte Probleme
-
6
Wie kann ich Rauschen aus einer Audioaufnahme entfernen?
-
3
Windows Media Center (Vista): Add-On oder Software zum Schneiden von TV-Aufnahmen?
-
1
Wie kann man in Winamp eine Ansicht erstellen, in der jeder Künstler, der nur einen Song hat, ausges...
-
3
Videobearbeitung mit ATI-Karten
-
1
VirtualDub für Linux
-
2
Wie viel Datenträgerverbrauch verwenden RAW-Videos?
-
1
Java Apps im Browser blinken / reißen beim Scrollen - warum?
-
3
Wiedergabe von Video-Rips mit Windows Media Center
-
6
Windows beim Herunterfahren automatisch stummschalten
-
2
Lohnt sich die Verwendung von S / PDIF?