AAC Stream fixen

  • Hi zusammen,

    ich hab hier einen Film mit Mehrkanal Sound. Zunächst wurde der auch anstandslos von MPC-HC abgespielt.
    Dann habe ich ihn in einen anderen Container gepackt: mp4 -> mkv

    Eigentlich sollte das ja kein Problem darstellen aber scheinbar tut es das doch:

    Code
    "C:\Program Files (x86)\GPAC\mp4box_ma.exe" -raw * "Rings Video.mp4"

    Nach einem neuen Multiplexen mit MKVtoolnix (neuste Version) lief aber gar nichts mehr ... MPC-hc spielt das Video nicht ab.
    Es bleibt einfach stehen ... man kann zwar hin- und her- springen aber es läuft einfach nicht.
    Muxt man das Video ohne Audio Anteile in einen Matroska Container läuft's einwandfrei ... ergo muss es am Audio liegen.

    FFPlay sagt mir:

    Code
    /opt/ffmpeg/bin/ffplay -v debug -i "Video_track2.aac" ffplay version N-81411-g57503fa Copyright (c) 2003-2016 the FFmpeg developers  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.2) 20160609  configuration: --prefix=/opt/ffmpeg --enable-gpl --enable-version3 --enable-nonfree --enable-static --disable-shared --enable-gray  libavutil      55. 29.100 / 55. 29.100  libavcodec     57. 54.100 / 57. 54.100  libavformat    57. 47.101 / 57. 47.101  libavdevice    57.  0.102 / 57.  0.102  libavfilter     6. 52.100 /  6. 52.100  libswscale      4.  1.100 /  4.  1.100  libswresample   2.  1.100 /  2.  1.100  libpostproc    54.  0.100 / 54.  0.100[file @ 0x7efce4007240] Setting default whitelist 'file,crypto'/0   [aac @ 0x7efce40008c0] Format aac probed with size=2048 and score=51[aac @ 0x7efce40008c0] Before avformat_find_stream_info() pos: 0 bytes read:32928 seeks:4 nb_streams:1[aac @ 0x7efce4009000] channel element 1.2 is not allocated    Last message repeated 659 times[aac @ 0x7efce4009000] channel element 1.2 is not allocated f=0/0       Last message repeated 324 times[aac @ 0x7efce4009000] channel element 1.2 is not allocated f=0/0       Last message repeated 457 times[aac @ 0x7efce4009000] channel element 1.2 is not allocated f=0/0       Last message repeated 443 times[aac @ 0x7efce4009000] channel element 1.2 is not allocated f=0/0       Last message repeated 526 times[aac @ 0x7efce4009000] channel element 1.2 is not allocated f=0/0       Last message repeated 438 times[aac @ 0x7efce4009000] channel element 1.2 is not allocated f=0/0       Last message repeated 435 times[aac @ 0x7efce4009000] channel element 1.2 is not allocated f=0/0       Last message repeated 227 times[aac @ 0x7efce40008c0] Probe buffer size limit of 5000000 bytes reached[aac @ 0x7efce40008c0] decoding for stream 0 failed[aac @ 0x7efce40008c0] Estimating duration from bitrate, this may be inaccurate[aac @ 0x7efce40008c0] Could not find codec parameters for stream 0 (Audio: aac (LC), 5.0, fltp, 345 kb/s): unspecified sample rateConsider increasing the value for the 'analyzeduration' and 'probesize' options[aac @ 0x7efce40008c0] After avformat_find_stream_info() pos: 5001216 bytes read:5046432 seeks:4 frames:3517Input #0, aac, from 'Video_track2.aac':  Duration: 03:13:31.50, bitrate: 345 kb/s    Stream #0:0, 3517, 1/28224000: Audio: aac (LC), 5.0, fltp, 345 kb/sFailed to open file 'Video.aac' or configure filtergraph[AVIOContext @ 0x7efce4007580] Statistics: 5046432 bytes read, 4 seeks

    Also ffplay spielt es auch nicht ab ...

    Sehr merkwürdig ist nur, das VLC mit dem Ganzen überhaupt keine Probleme hat.
    Das reportet aber auch:

    Code
    Stream 0
    Typ: Audio
    Codec: MPEG AAC Audio (mp4a
    Kanäle: 3F2M2R/LFE
    Abtastrate: 48000 Hz

    Interpretiere ich das so richtig das "manchmal" das Ganze als 5.0 und manchmal als 7.1 erkannt wird ?
    Nun, es sollte auch 7.1 Sound sein ... Kann das bedeuten das mp4box beim demuxen da was kaputt gemacht hat ?
    Und gibt's 'ne Möglichkeit das wieder hinzubiegen ?

  • Mir fehlt da etwas der Überblick... :grübeln:

    (1) Du hast eine MP4-Datei mit 7.1-AAC-Ton ... und irgendwelchem Video. Davon könnte eine MediaInfo-Analyse nützlich sein.

    (2) Du machst damit erstmal irgendwas mit einer "mp4box_ma.exe", die ich nicht kenne, bevor du nach MKV konvertierst. Was hast du vor, wozu ist das gut (scheint, als willst du die Streams im Rohformat demultiplexen)? Worin unterscheidet sich mp4box_ma von MP4Box?

    (3) Das Ergebnis von Schritt (2) willst du nach MKV umverpacken; warum nicht die Originaldatei von Schritt (1) mit mkvtoolnix direkt verarbeiten?

    Möglicherweise kommt mkvtoolnix nicht gut mit "rohem" AAC klar (evtl. ADTS-Header), sondern bevorzugt M4A (AAC in einem minimalen MP4-Audio-Container), weil daraus die Eigenschaften besser herauszulesen sind. Und dann könnte man es ohnehin gleich direkt aus der ursprünglichen MP4-Datei lesen. Insbesondere würde dabei die Synchronität zwischen Video- und Audio-Spuren besser erhalten bleiben.

  • Uh .. ok ...
    Ich hatte eine .mp4 mit 7.1 Audio ... deren Video Stream pasdte nicht. War 24 statt 23.976 FPS
    Also hab ich das Ganze in seine Bestandteile zerlegt (Elementar Streams). mit 'ner mp4box.exe - _ma heißt die nur weil ich die selbst gebaut habe ... hat aber keinen Einfluss auf die Funktionalität und entspricht der aktuelle Version.

    Leider wurde die Originaldatei mit einer "neueren Version" überschrieben (Pech ...)

    Es spielt keine Rolle ob das Ganze in .mkv oder .mp4 Steckt. Der Effekt ist erst mal der selbe: MPC-hc spielt's nicht ab (weil falsch erkannt) VLC macht's richtig ...

    Wer mag: hier mal 'n Schnipsel: test.zip

  • Wie auch immer, ich habe also mir den AAC Track geschnappt und ihn via VLC nach FLAC gewandelt.
    Da ja besagte de/encoder ihre Probleme mit 7.1 haben, das Ganze nach 5.1 (via avs Script) down-ge-muxed und wieder in AAC gecoded.

    Soweit passt alles wieder. MPC-hc mault nicht mehr rum und auch ffplay spielt das Ganze anstandslos ab.

    Vielleicht lohnt es sich mal 'n Thread in doom9 aufzumachen (?)

  • Durchaus. Da weiß einer von den Entwicklern der beteiligten Programme sicherlich, welche Ursachen dafür in Frage kommen.

    Meine Vermutung bleibt erstmal, dass durch einen Export als Roh-Stream vielleicht gewisse Headerdaten verloren gehen, die nur in M4A, aber nicht in ADTS-AAC gespeichert werden.
    _

    Ausschnitt aus dem MediaInfo-Report deiner test.aac:

    Code
    Channel(s)                               : 5
    Channel(s)                               : 5 channels
    Channel positions                        : Front: L C R, Side: L R
    Channel positions                        : 3/2/0
    ChannelLayout                            : C L R Ls Rs

    Das sähe dann aber nicht nach 7.1 aus.

  • Ja, aber wie schon gesagt, VLC behauptet was anderes. Öffne ich die FLAC Datei in Audiocity sehe ich auch 8 Spuren ...

  • 1. Die FLAC-Datei ist nicht die AAC-Datei. Da ist die Dateistruktur völlig anders, ein FLAC-Header ist kein ADTS-Header.

    2. Wenn VLC die AAC-Datei trotzdem als 7.1 erkennt, dann muss VLC irgendwas anders mache als ffmpeg / fflpay / mkvtoolnix. Vielleicht die Datei gründlicher untersuchen und sich nicht auf den ADTS-Header verlassen. Aber statt ohne Wissen zu spekulieren, warte ich da mal lieber Antworten ab von jemandem, der sich damit auskennt. Vielleicht findest du in der Zwischenzeit noch ähnliches Material, mit dem man das noch mal testen kann.

  • Es wurde mal ein ähnliches Problem gemeldet, aber schon 2016 korrigiert. Ist dein MP4Box hinreichend neu? Wenn ja, wäre das insofern interessant, dass da vielleicht eine Regression aufgetreten ist (ehemels korrigierter Fehler taucht wieder auf); oder es ist ein neuer. Also nochmal gemeinsam testen wäre sehr nützlich. Leider habe ich kein 7.1-Material.

  • Ich hab das mal als Problem #881 bei GPAC gemeldet, nachdem ich es für ein paar Dolby-TrueHD-Trailer nachvollziehen konnte.

    Interessant finde ich v.a. die Meldung von ffprobe:

    Code
    [aac @ 0000000002626480] channel element 1.2 is not allocated
        Last message repeated 612 times
    [aac @ 0000000002613dc0] decoding for stream 0 failed
    [aac @ 0000000002613dc0] Estimating duration from bitrate, this may be inaccurate
    [aac @ 0000000002613dc0] Could not find codec parameters for stream 0 (Audio: aac (LC), 5.0, fltp, 11 kb/s): unspecified sample rate
    Consider increasing the value for the 'analyzeduration' and 'probesize' options
    Input #0, aac, from 'Dolby_Catalyst_Lossless-thedigitaltheater.mkv_track1.aac':
      Duration: 00:06:56.09, bitrate: 11 kb/s
        Stream #0:0: Audio: aac (LC), 5.0, fltp, 11 kb/s

    "channel element 1.2 is not allocated" – könnte ein Hinweis darauf sein, dass die Struktur der ADTS-Datei nicht korrekt ist.

  • Hm ... hier schaut's ähnlich aus ...

    In punkto mp4box:

    Code
    C:\Users\vm>"C:\Program Files (x86)\GPAC\mp4box_ma.exe" -versionMP4Box - GPAC version 0.5.2-DEV-rev1195-g7d45d8b-masterGPAC Copyright (c) Telecom ParisTech 2000-2012GPAC Configuration: --enable-pic --strip --static-mp4box --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --prefix=build/x86_64-w64-mingw32 --static-mp4box --use-zlib=no --extra-cflags=-Ibuild/x86_64-w64-mingw32/include --extra-ldflags=-Lbuild/x86_64-w64-mingw32/libFeatures: GPAC_64_BITS GPAC_DISABLE_3D GPAC_DISABLE_SWF_IMPORT

    Und ffprobe sagt mir beim aac:

  • Und nochwas ist mir aufgefallen. Nachdem ich das Ganze "repariert" hatte, passte die Kanal-Ordnung nicht.
    Der "Center" war auf einmal auf Kanal 7 anstatt 3 ...

    Ebenso wird das Ganze von MediaInfo falsch angezeigt. Das steht als Chanel Order: Front: "L C R, Side: L R"
    Tatsächlich ist es aber: "L R C SL SR"

  • Weder noch. Wie schon geschrieben, scheint die Ausgabe von ADTS-AAC nicht korrekt zu sein. Also kannst du jetzt nur noch abwarten, wann sich dazu was im GPAC-Bugtracker ergibt.

    Übrigens ist deine mp4box-Version 0.5.2 ja schon unheimlich alt, hol dir mal eine neue Nightly, am besten 64-bit, wenn dein Windows/Linux/etc. ebenso breit ist.

    Code
    MP4Box - GPAC version 0.7.2-DEV-rev206-gf32d687-master
    GPAC Copyright (c) Telecom ParisTech 2000-2012
    GPAC Configuration: (static configuration file)
    Features: GPAC_64_BITS GPAC_MEMORY_TRACKING GPAC_HAS_SSL GPAC_HAS_SPIDERMONKEY GPAC_HAS_JPEG GPAC_HAS_PNG

    Und selbst die scheint nicht recht zu funktionieren. Also ... neues in Kürze.

    Bis dahin: AAC nicht als Rohdaten (ADTS) ausgeben, sondern als M4A!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!