e-ac3 richtig convertieren

  • Hi zusammen,

    ich habe hier einen Audio Stream in e-ac3 der per-tut nicht richtig konvertieren will.
    Weder mit eac3to noch MeGUI oder ffmpeg.
    Entweder wird er gar nicht erkannt oder falsch wieder gegeben was zur folge hat das er eine doppelt so lange Laufzeit hat als er haben sollte.

    Bis jetzt scheint mit ffmpeg der vielversprechendste Weg zu sein, aber wie schon gesagt, das Ergebnis ist halt doppelt so lang.

    Code
    /opt/ffmpeg/bin/ffmpeg -i track_1.ac3 -c:a aac -q:a 4 track_1.mp4

    Ich hab mal ein Snip von 500kb hier angehängt
    snip.zip

    Gibt es eine Möglichkeit dem ffmpeg decoder zu sagen das hier ein e-ac3 vorliegt ... er erkennt das scheinbar als "normales" AC3 format ...:(

  • partout

    MediaInfo erkennt das Format E-AC-3 mit 6 Kanälen (5.1 bzw. 3/2.1); mich verwirrt allerdings eine angebliche Bitrate von 500 b/s (in Worten: 500 bit pro Sekunde)?!

    Im ffmpeg-Paket sollte ffprobe mehr Details über Mediendateien berichten, ohne sie dann weiter zu verarbeiten.

  • Das ist auch kein richtiges EAC3 sondern ein Bluray EAC3 (hier 7.1)
    Darin steckt ein normaler DD 5.1 Core, nur Kanäle > 5.1 sind als DD+ kodiert
    Den Core mit zb eac3to extrahieren (eac3to snip.eac3 snip.ac3 -core)

  • Reines DD+ ist nur erlaubt als Secondary Audio.
    Bei Primary Audio nur für Streams mit mehr als 5.1 Kanälen, dort sind die 5.1 Kanäle normal DD bis 640 kodiert (der sogenannte Core), die Kanäle darüber hinaus sind DD+ kodiert.
    Die Player müssen auch nur den Core dekodieren können.

  • Dann wäre es natürlich einfacher, wenn man ffmpeg mitteilen könnte, es möge nur den AC3-Core verarbeiten und die EAC3-Erweiterung ignorieren; aber wenn das nicht geht, dann muss man wohl vorher mit eac3to erst mal den Kern extrahieren, um zu vermeiden, dass ffmpeg von falschen Voraussetzungen ausgeht.

  • Hmmm ... also das mit ffmpeg hab ich's par-tout nicht hinbekommen ...

    Also zurück zu eac3to. Nach etlichen Experimenten hat's nun geklappt.
    ABER ! Es hat nur auf diesem Weg funktioniert:

    Code
    eac3to.exe track_1.ac3 track_2.ac3 -core

    Erst danach kann nach AAC gecoded werden. Alle anderen Versuche schlugen mit der Meldung fehl das das "Input Format" nicht bestimmt werden konnte (?)

  • Ja, darauf wollte bigotti5 auch hinweisen: Das in Blu-ray-Tonspuren verwendete E-AC3 ist offenbar eine spezielle Misch-Variante, die einen "herkömmlichen" AC3-Kern benötigt. Und dein ffmpeg (wie alt ist das?) scheint dieses besondere Format nicht zu erkennen und geht davon aus, dass eine Audiodatei im E-AC3-Format für alle Kanäle das erweiterte Format verwendet, was aber bei Blu-ray-Tonspuren wohl nicht der Fall ist.

    Also musst du wohl damit leben, dass du erst den "herkömmlichen" AC3-Kern extrahieren musst, der dann weiterverarbeitet werden kann. Wahrscheinlich hat der üblicherweise 640 kbps für 5.1 Kanäle, liegt also in der Qualität immer noch deutlich über DVD-Video-Level (da ist das Maximum 448 kbps).

    Hier vielleicht mal noch ein Log von einer ziemlich aktuellen ffmpeg-Version (N-81308-g369ed11, 9.8.2016), die scheint damit zumindest "im Kern" klarzukommen. Man beachte die Warnung:

    Code
    [eac3 @ 0000000002a8f900] Dependent substream decoding is not implemented. Update your FFmpeg version to the newest one from Git. If the problem still occurs, it means that your file has a feature which has not been implemented.
    [eac3 @ 0000000002a8f900] If you want to help, upload a sample of this file to ftp://upload.ffmpeg.org/incoming/ and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)

    ^ kurz: Kann ich noch nicht, ich konvertier bloß den Core. Wenn du willst, dass ich's mal können werde, lad mir was hoch.

    Ich lad denen dann also mal deinen Schnipsel hoch, für den Bug-Report 3595. (Die ftp-URL ist tot.)

    Und bei MediaInfo passt er zum Bugreport 539.

  • Code
    eac3to.exe track_1.ac3 track_2.ac3 -core


    Wenn das funktioniert, muss es mit ffmpeg ja auch funktionieren (es sei denn, eac3to hätte einen eigenen Parser...), und zwar so:

    Code
    ffmpeg -i snip.ac3 -map 0:0 snip.eac3ffmpeg -i snip.eac3 -c:a aac -strict -2 -q:a 4 snip.mp4


    Direkt zu MP4 geht es aber auch nicht.

  • Hi, sorry das es so lange gedauert hat...

    mein ffmpeg:

    Hier ist ein 10mb snip. Hoffe es passt -> Link

  • Also, dein Snip wird vom QuickTime-Player ohne Probleme und vom VLC (OS X) gar nicht abgespielt. Die Umwandlung mit meinem ffmpeg ergibt folgendes Sitzungsprotokoll:

    Das Zwischenergebnis "snip2.eac3" ist ein 5.1 eac3-Stream (448 Kbps) und mit deinem Code ist das Endergebnis eine MP4 mit einem 384 Kbps Stereoton. Ab dem Zwischenergebnis wird alles auch vom VLC abgespielt. Um eac3 7.1 direkt umzuwandeln musst du noch etwas warten, das ist aber in der Pipeline.

    Einmal editiert, zuletzt von Endoro (22. September 2016 um 00:31) aus folgendem Grund: 348 -> 384

  • LigH. Ooops sorry. Falsches ffmpeg. Das ist ja das vom Ubuntu System.
    Ich hab's hiermit auch versucht:

  • Mit einem relativ aktuellen Zeranoe-Build klappt es jedenfalls:


    Zumindest soweit, dass ffmpeg den AC-3-Kern verarbeitet, die abhängigen E-AC-3-Kanäle aber ignoriert.

  • "built on Mar 23 2015 04:06:35" ... damit ist dein ffmpeg erheblich zu alt für "dependent E-AC-3" von Blu-ray, glaube ich.


    Es ist auf jeden Fall zu alt für eac3 7.1, aber das kommt ja erst noch. Den eac3 5.1 Stream bekommt es aber schon raus:

    Der wird auch ordentlich abgespielt. Aber du hast Recht, ich muss wieder mal ein Update machen. Beim Mac ist das aufwendig, weil Homebrew bei 2.5.2 stehen geblieben ist und die fertigen Binaries nicht mit --enable-nonfree kompiliert werden dürfen. Ich bin nicht so der Kompilierer....

  • Es muss ja nicht "nonfree" sein. Die Zeranoe-Builds haben GPL 3 und LGPL aktiviert, wenn ich mich recht erinnere... die media-autobuild_suite kann auf "simulierte Zeranoe-Optionen" eingestellt werden, aber die ist doch eher für Windows geeignet. Allerdings kannst du wahrscheinlich aus den Skripten die entsprechende Voreinstellung herauslesen und musst dann nur noch Windows-spezifische mit Mac-spezifischen Optionen ersetzen. Im IRC hilft dir wohl #ffmpeg auf Freenode weiter.

  • Zeranoe ist Windows-only. Ich hab aber festgestellt, dass mein "Homebrew" kaputt war. die aktuell dort angebotene Version ist:

  • Zeranoe ist Windows-only.

    Ja, aber ... die media-autobuild_suite von jb-alvarado versucht, einen zu den Zeranoe-Builds ziemlich äquivalenten Optionensatz zur Verfügung zu stellen:

    Code
    set ffmpeg_options_zeranoe=--disable-w32threads --enable-decklink --enable-fontconfig ^
    --enable-frei0r --enable-gnutls --enable-libass --enable-libbluray --enable-libbs2b ^
    --enable-libcaca --enable-libfreetype --enable-libfribidi ^
    --enable-libgme --enable-libgsm --enable-libilbc --enable-libmfx --enable-libmodplug ^
    --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg ^
    --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex ^
    --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc ^
    --enable-libwavpack --enable-libwebp --enable-libxavs --enable-libxvid --enable-libzimg ^
    --enable-openssl --enable-libsnappy --enable-gpl

    Zuzüglich der Pakete, die von der Suite je nach Wunsch noch mit hinein compiliert werden.

    Wenn man darin nun Windows-spezifische durch Mac-spezifische Optionen ersetzt und das ganze nicht in MSYS/MinGW, sondern nativ unter OS X compiliert, sollte man hoffentlich auch was ziemlich gleichwertiges hinbekommen.

    Aber ich sehe schon, deine aktuelle Homebrew-Variante enthält auch so ziemlich alles mögliche. Sogar nonfree-Pakete (also theoretisch frisch aus Quellen compiliert und nur auf deinem Rechner zu belassen). Damit sollte sie also die gestellten Anforderungen erfüllen.

Jetzt mitmachen!

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