Angeben verschiedener AAC-Profile für verschiedene Audioströme in ffmpeg

581
Wally Walters

Ich versuche, ein Video mit zwei Audioströmen aufzunehmen und das erste in Stereo mit 48 Kbps mit AAC HEv2-Kodierung zu komprimieren, wobei das zweite in Mono mit 40 Kbps mit HEv1 arbeitet. Mein Code lautet im Wesentlichen wie folgt:

set STREAM_01=-map 0:a:0 -b:a:0 48000 -ac 2 -c:a:0 libfdk_aac -profile:a aac_he_v2  set STREAM_02=-map 0:a:1 -b:a:1 40000 -ac 1 -c:a:1 libfdk_aac -profile:a aac_he  set SPECS=-ar 48000 -sample_fmt s16 -cutoff 20000 ffmpeg.exe -i input.mkv -map 0:v:0 -c:v copy %SPECS% %STREAM_01% %STREAM_02% output.mkv 

Das Programm scheint jedoch nur das zuletzt ausgeführte Profil auszuführen - beide Streams kommen entweder aus HEv1 oder beide aus HEv2. Dies ist zweifellos, weil die Profilanweisung einen Stream-Bezeichner auslässt, aber wenn ich versuche, die Profiloptionen in das Formular zu schreiben, "-profile:a:1 aac_he_v2"oder "-profile:a:2 aac_he"ich die Fehlermeldung "Fehler beim Öffnen des Encoders für Ausgabestrom # 0: 1" erhalte. Was fehlt mir hier?

0

1 Antwort auf die Frage

0
Gyan

aac_he_v2 kodiert Stereo-Streams und Ihre Kanal-Layout-Option ist nicht Stream-qualifiziert.

set STREAM_01=-map 0:a:0 -b:a:0 48000 -ac:a:0 2 -c:a:0 libfdk_aac -profile:a:0 aac_he_v2  set STREAM_02=-map 0:a:1 -b:a:1 40000 -ac:a:1 1 -c:a:1 libfdk_aac -profile:a:1 aac_he  
Danke, Mulvya, obwohl ich nicht ganz sicher bin, was "Stream-qualifiziert" bedeutet. Was ich weiß, ist, dass wenn ich entweder Stream 1 oder Stream 2 aus der ffmpeg-Zeile weglasse, der Befehl wie erwartet funktioniert - das heißt, ich bekomme einen Stereo-Stream mit he_v2-Kodierung, wenn ich% STREAM_02% oder einen Monostream entferne mit he_v1, wenn ich% STREAM_01% entferne. Wally Walters vor 7 Jahren 0
Eine Einstellung, die nur für den angegebenen Stream gilt. Gyan vor 7 Jahren 0
Dann deutet das darauf hin, dass mein bester Einsatz darin besteht, jeden Stream separat zu verarbeiten und dann am Ende einen Remux zu machen, etwa `ffmpeg.exe -i -map 0: v -c: v copy -an" VIDEO_01.mkv "ffmpeg.exe - i input.mkv -vn% SPECS%% STREAM_01% AUDIO_01.m4a ffmpeg.exe -i input.mkv -vn% SPECS%% STREAM_02% AUDIO_02.m4a ffmpeg.exe -i VIDEO_01.mkv -i AUDIO_01.m4a -i AUDIO_02 .m4a -map 0 -map 1 -map 2 -c copy output.mkv` Und es funktioniert; es ist einfach nicht so einfach. Auf jeden Fall nochmals vielen Dank. Wally Walters vor 7 Jahren 0
Ich verstehe nicht; Hat mein Befehl nicht funktioniert? Gyan vor 7 Jahren 0
Mein Fehler; es funktioniert. Bei der Eingabe ist ein Fehler aufgetreten. Nochmals vielen Dank. Wally Walters vor 7 Jahren 0
Eine winzige Korrektur ist schließlich gesagt und getan. Ich musste -profile: a in -profile: a: 0 und -profile: a: 1 ändern, um HE-v2- bzw. HE_v1-Kodierung zu erhalten. Aber es funktioniert jetzt wunderbar. Wally Walters vor 7 Jahren 0
Hoppla, hab die vergessen. Gyan vor 7 Jahren 0