FFMPEG Transcode/Downmix Audio-Stream > 2 Ausgangs-Streams schlägt fehl

WICHTIG ERFORDERLICH: ZIP/ANHANG DER KONVERTIERUNGS-LOGS für Fehlerberichte (siehe unten)

Anfrageart:
BUG
MCEBuddy-Version und -Typ (32bit oder 64bit):
2.4.7 x64
Betriebssystem und -Typ (32bit oder 64bit):
Windows 10 x64
Zusammenfassung des Problems oder Vorschlags:
Ich habe mehrere MKV-Dateien mit einem einzelnen DTS-Audiostream. Ich verwende den H264_NVENC-Encoder und muss daher ffmpeg nutzen – genauer gesagt, um den einzelnen DTS-5.1-Quell-Audiostream sowohl in einen AAC-2.0- als auch in einen AC3-5.1-Ausgangs-Audiostream zu transkodieren/downmixen.
Ich habe die profiles.conf entsprechend mit der passenden ffmpeg-Audio-Konfiguration angepasst:

ffmpeg-audio=-filter_complex "[0:a]asplit[2ch][6ch];[2ch]pan=stereo|FL=FC+0.6FL+0.2BL|FR=FC+0.6FR+0.2BR[aac]" -map [aac] -map [6ch] -c:a:0 libfdk_aac -cutoff 18000 -metadata:s:a:0 title="Stereo" -disposition:a:0 default -c:a:1 ac3 -metadata:s:a:1 title="Surround" -disposition:a:1 none

Das Debug-Log liefert folgende Details zum Konvertierungsfehler:
[AVFilterGraph @ 0000028a2c3d62e0] Unable to parse graph description substring: "  -map"

Die komplexen Filterwerte müssen in Anführungszeichen stehen, was offenbar die Ursache für den Konvertierungsfehler ist.

Schritte zur Reproduktion des Fehlers:
Konvertierungsaufgabe so konfigurieren, dass eine Quell-.MKV-Datei mit einem einzelnen (nicht-AC3-)5.1-Audiostream per ffmpeg nach MP4 konvertiert wird, wobei der Stream in zwei Ausgangs-Audiostreams transkodiert/downgemixt wird. Beispielhafte profiles.conf-Task-Einstellungen (siehe Abschnitt „ffmpeg-audio=“):

[TV MP4 Video HQ NVENC]
Description=High profile, good quality 1 pass MP4 (H.264/Audio) NVENV (Constant Quality) conversion.
order=ffmpeg
ffmpeg-general=-threads 0
ffmpeg-video=-vcodec nvenc_h264 -profile:v main -level:v 4.0 -preset hq -rc vbr -qmin 10 -qmax 51 -refs 4 -bf 4 -g 300 -b:v 2500k -maxrate 3000k -bufsize 6000k -map 0:v -sws_flags lanczos -map_chapters -1 -map_metadata -1 -movflags +faststart -metadata:s:v title="" -sn
ffmpeg-audio=-filter_complex "[0:a]asplit[2ch][6ch];[2ch]pan=stereo|FL=FC+0.6FL+0.2BL|FR=FC+0.6FR+0.2BR[aac]" -map [aac] -map [6ch] -c:a:0 libfdk_aac -cutoff 18000 -metadata:s:a:0 title="Stereo" -disposition:a:0 default -c:a:1 ac3 -metadata:s:a:1 title="Surround" -disposition:a:1 none
ffmpeg-audioac3=-map 0:a -c:a:1 copy -metadata:s:a:1 title="Surround" -disposition:a:1 none -map 0:a -c:a:0 libfdk_aac -ab 128k -ar 48000 -ac 2 -cutoff 18000 -metadata:s:a:0 title="Stereo" -disposition:a:0 default
ffmpeg-ext=.mp4
ffmpeg-audiodelay=skip
PreConversionCommercialRemover=true

Ich habe das Konvertierungs-Debug-Log und die Mediainfo-Ausgabe einer Beispiel-Quell-MKV-Datei mit dem einzelnen DTS-Audiostream angehängt (Salvation - S01E02 - Another Trip around the Sun.mkv.txt).

Screenshots:
Salvation - S01E02 - Another Trip around the Sun.mkv-TV MP4 VBR Clip-2017-07-23T17-50-20.0727306-07-00.log.zip (677.7 KB)
Salvation - S01E02 - Another Trip around the Sun.mkv.txt (6.1 KB)

Ich habe dein Profil genommen und es repliziert, hier tritt kein solches Problem auf, es läuft einwandfrei:

2017-07-24T16:20:13 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0#0:0 (h264 (native) → h264 (nvenc_h264))
2017-07-24T16:20:13 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1#0:1 (ac3 (native) → aac (libfdk_aac))
2017-07-24T16:20:13 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1#0:2 (copy)

Ich denke, dein Problem ist, dass dein Dateieditor die profiles.conf nicht im richtigen Zeichenencoding (UTF-8) speichert oder dass er einige deiner Zeichen beim Speichern in erweiterte Unicode-Zeichen umwandelt.

Im Wesentlichen hast du ein Dateieditor-Problem.

Ich habe bestätigt, dass meine profiles.conf-Datei UTF-8-kodiert ist.

Bei Ihrem Test – verwendeten Sie eine Quelldatei mit einem einzelnen Nicht-AC3-6-Kanal-Audiostream (z. B. DTS, DTS-HD usw.)? Die von Ihnen bereitgestellte Protokollausgabe deutet darauf hin, dass Ihre Quelle einen AC3-Audiostream enthielt. In diesem Fall bezog sich Ihr Test auf die Profileinstellung „ffmpeg-audioac3=“, anstatt auf die Einstellung „ffmpeg-audio=“, wo bei mir aktuell das Problem liegt.

Zur Referenz erzeugt der Aufruf von ffmpeg über die Befehlszeile folgende Stream-Zuordnungen, wobei die in profiles.conf angegebenen Filter korrekt verwendet werden (d. h. ffmpeg-audio=-filter_complex „[0:a]asplit[2ch][6ch];[2ch]pan=stereo|FL=FC+0.6FL+0.2BL|FR=FC+0.6FR+0.2BR[aac]“ -map [aac] -map [6ch] -c:a:0 libfdk_aac -cutoff 18000 -metadata:s:a:0 title=„Stereo“ -disposition:a:0 default -c:a:1 ac3 -metadata:s:a:1 title=„Surround“ -disposition:a:1 none)

Stream #0:1 (dca) -> asplit (graph 0)
Stream #0:0 -> #0:0 (h264 (native) -> h264 (nvenc_h264))
pan (graph 0) -> Stream #0:1 (libfdk_aac)
asplit:output1 (graph 0) -> Stream #0:2 (ac3)

Da du ein sehr spezielles, fortgeschrittenes Profil hast, vermute ich, dass du nicht möchtest, dass MCEBuddy deine Einstellungen verändert. Ich würde dir empfehlen, diese 3 Optionen in deinem Profil zu erkunden:

ffmpeg-VideoOptimized=true
ffmpeg-AudioOptimized=true
ffmpeg-UsingHardwareEncoding=true

Sieh dir die Dokumentation an, wie sie funktionieren.

Okay, ich habe eine AAC-Multikanal-Audiodatei als Test verwendet (eine Änderung: von nvenc auf Software-Encoder umgestellt), ich bekomme einen anderen Fehler, der mit den Encoder-Einstellungen zusammenhängt, aber ich kann deinen ursprünglichen Fehler, der für mich wie ein Unicode-Fehler aussieht, immer noch nicht reproduzieren. In meinem Test wurde die profiles.conf-Datei im UTF16LE-Format gespeichert.

Das bekomme ich:

2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Stream mapping:
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0 (aac) → asplit (graph 0)
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Stream #0:2#0:0 (h264 (native) → h264 (libx264))
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → pan (graph 0) → Stream #0:1 (libfdk_aac)
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → asplit:output1 (graph 0) → Stream #0:2 (ac3)
2017-07-25T11:18:21 MCEBuddy.AppWrapper.FFmpeg → Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

EDIT: Ich habe eine Audiospur mit zwei Kanälen und ohne AC3 verwendet, werde es nochmal mit einer einzelnen Audiospur ohne AC3 und mit mehreren Kanälen versuchen.

Du hast ein nicht-ASCII-Zeichen in deinem ursprünglichen Befehl, irgendwo versteckt. Entferne es und der Fehler verschwindet.

Mit einer einspurigen Mehrkanal-Audiodatei kann ich denselben Fehler nicht reproduzieren. Der Fehler liegt vermutlich an einem Profilproblem; in meinem Beispielvideo war Video Spur 1 und Audio Spur 0:

Input:

2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:00x100: Audio: aac (LC) ([15][0][0][0] / 0x000F), 48000 Hz, 5.1, fltp, 159 kb/s
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1[0x101]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc

Output:

2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream mapping:
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0 (aac) → asplit (graph 0)
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Stream #0:1#0:0 (h264 (native) → h264 (libx264))
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → pan (graph 0) → Stream #0:1 (libfdk_aac)
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → asplit:output1 (graph 0) → Stream #0:2 (ac3)
2017-07-25T11:33:08 MCEBuddy.AppWrapper.FFmpeg → Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

Wenn du weiterhin denselben Fehler wie im ursprünglichen Beitrag erhältst, prüfe die Kodierung deiner Datei.

Wie vorgeschlagen, habe ich „ffmpeg-AudioOptimized=true“ zu meinen Profilen hinzugefügt. Meine Konvertierungsaufgaben, die sich auf „ffmpeg-audio=“ beziehen – also jede nicht-AC3-Audioquelle – funktionieren nun.

Weitere Tests heute Morgen zeigen, dass das ursprüngliche Problem für Konvertierungsaufgaben (AC3-Quellmedienströme), die sich auf „ffmpeg-audioac3=“ beziehen, weiterhin besteht.

Sie haben ein erweitertes Nicht-ASCII-Zeichen in Ihrer Befehlszeile. Verwenden Sie ein Online-Tool wie http://www.ubertoolz.com/demo/CleanUp.php, um Ihre Nicht-ASCII-Zeichen zu bereinigen, und es wird einwandfrei funktionieren.