audiamus / AaxAudioConverter

Convert Audible aax files to mp3 and m4a/m4b
GNU General Public License v3.0
1.48k stars 113 forks source link

Problem mit kapitelnamen bei Hörbüchern mit mehr als 5 Teilen ( hier Jahre des Jägers von Don Winslow und Es von Steven King #13

Closed alurio closed 4 years ago

alurio commented 4 years ago

Hallo Audiamus!

Hier Alurion aus dem Hifi Forum.

Ich habe dem Problem mit den beiden Büchern jetzt untersucht hier die Ergebnisse

Es:

teil 1 Kapitelnamen funktionieren Teil 2 Kapitelnamen funktionieren nicht. Teil 3 Kapitelnamen funktionieren nicht. Teil 4 Kapitelnamen funktionieren Teil 5 Kapitelnamen funktionieren nicht Teil 6 Kapitelnamen funktionieren Teil 7 Kapitelnamen funktionieren nicht

Jahre des Jägers

Teil 1 Kapitelnamen funktionieren Teil 2 Kapitelnamen funktionieren nicht ( stattdessen 91 numerierte Kapitel ) Teil 3 Kapitelnamen funktionieren Teil 4 Kapitelnamen funktionieren Teil 5 Kapitelnamen funktionieren Teil 6 Kapitelnamen funktionieren

In Filescache sind 13 Content Meta Dateien, es sind also offensichtlich alle Dateien da In der Audible App werden auch durchgängig Kapitelnamen angezeigt.

Ich hab mit jetzt im nächsten Schritt die metadatei zum zweiten Teil von Jahre des Jägers angesehen und nahm an, da stünden vielleicht einfach keine Kapitelnamen drin. Tun sie aber und zwar bei allen betroffenen Dowmloadteilen ( siehe Anhänge

contentmetadata Jahre des Jägers Teil 2 .docx

contentmetadata Es Teil 3 .docx contentmetadata Es Teil 5 .docx contentmetadata Es Teil 7 .docx contentmetadata Es Teil 2 .docx

Bei Es ist mir noch folgender Code aufgefallen "content_format":"AAX_44_64"," Das finde ich komisch, ich lade immer AAX + runter. Müsste da dann nicht 44 128 stehen?

Aber vielleicht bedeutet das ja auch gar nichts

Also so wie ich die Sache sehe , sind entweder irgendwelche Fehler in den Metadateien, oder der AAX Audioconverter kriegt es jenseits von 5 Teilen aus irgendeinem Grund nicht hin die Kaptielnamen korrekt auszulesen.

bei den beiden Titeln haben wir es ja mit 7 bzw 6 Teilen zu tun.

Schau es dir an, vielleicht kriegst du das Mysterium ja gelöst.

Viele Grüße

audiamus commented 4 years ago

Schau es dir an, vielleicht kriegst du das Mysterium ja gelöst.

Vielen Dank erst einmal für die Daten.

Das ist schon sehr merkwürdig. Die Inhalte dieser Dateien erscheinen mir in Ordnung.

Jetzt könnte noch sein, dass die Zuordnung der Dateien zwischen aax und json nicht funktioniert.

Möglicherweise gibt es Besonderheiten in der Namensgebung, die in meinen Beispielen nicht auftauchen und auf die AAX Audio Converter nicht vorbereitet ist.

Um das herauszufinden, könntest Du vielleicht noch folgendes bereitstellen:

Für die beiden Bücher:

  1. Sämtliche 13 content_meta_asin.json als zip packen und hier hochladen. json nimmt GitHub ja offensichtlich nicht, aber zip geht. Ein zip für alle reicht.
  2. Dazu sämtliche 13 vollständige .aax-Dateinamen, ohne Pfad, als Text, wobei ich davon ausgehe, dass alle im selben Ordner liegen.

Damit kann ich eines meiner Bücher 13-fach kopieren, und die Kopien umbenennen auf Deine .aax-Namen. Zusammen mit Deinen original content_meta bin ich dann so nah dran wie möglich, um es nachzuspielen.

Bei Es ist mir noch folgender Code aufgefallen "content_format":"AAX_44_64"

Die übliche Kombination wäre 22 kHz mit 64 kbit/s, und 44 kHz mit 128 kbit/s, doch es gibt wohl Variationen. Es scheint mir aber so, dass die alle unter "Hoher Qualität" eingereiht sind.

alurio commented 4 years ago

Hallo !

okay, erledige ich heute nach der Arbeit.

audiamus notifications@github.com schrieb am Mo., 24. Feb. 2020, 09:55:

Schau es dir an, vielleicht kriegst du das Mysterium ja gelöst.

Vielen Dank erst einmal für die Daten.

Das ist schon sehr merkwürdig. Die Inhalte dieser Dateien erscheinen mir in Ordnung.

Jetzt könnte noch sein, dass die Zuordnung der Dateien zwischen aax und json nicht funktioniert.

Möglicherweise gibt es Besonderheiten in der Namensgebung, die in meinen Beispielen nicht auftauchen und auf die AAX Audio Converter nicht vorbereitet ist.

Um das herauszufinden, könntest Du vielleicht noch folgendes bereitstellen:

Für die beiden Bücher:

  1. Sämtliche 13 content_meta_asin.json als zip packen und hier hochladen. json nimmt GitHub ja offensichtlich nicht, aber zip geht. Ein zip für alle reicht.
  2. Dazu sämtliche 13 vollständige .aax-Dateinamen, ohne Pfad, als Text, wobei ich davon ausgehe, dass alle im selben Ordner liegen.

Damit kann ich eines meiner Bücher 13-fach kopieren, und die Kopien umbenennen auf Deine .aax-Namen. Zusammen mit Deinen original content_meta bin ich dann so nah dran wie möglich, um es nachzuspielen.

Bei Es ist mir noch folgender Code aufgefallen "content_format":"AAX_44_64"

Die übliche Kombination wäre 22 kHz mit 64 kbit/s, und 44 kHz mit 128 kbit/s, doch es gibt wohl Variationen. Es scheint mir aber so, dass die alle unter "Hoher Qualität" eingereiht sind.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/audiamus/AaxAudioConverter/issues/13?email_source=notifications&email_token=AOUMUYKCSVP3VJILBW7TJRLREODRBA5CNFSM4KZ6PR3KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEMXA76A#issuecomment-590221304, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYJRR5OQ4FSE5MWNRBLREODRBANCNFSM4KZ6PR3A .

alurio commented 4 years ago

Hallo Audiamus

Hier die Dateinamen

Es - Teil 1_B004WNC3U6_LC_128_44100_Stereo.aax Es - Teil 2_B004WNC40U_LC_128_44100_Stereo.aax Es - Teil 3_B004WNC4GO_LC_128_44100_Stereo.aax Es - Teil 4_B004WNC59A_LC_128_44100_Stereo.aax Es - Teil 5_B004WNC6CQ_LC_128_44100_Stereo.aax Es - Teil 6_B004WNC72K_LC_128_44100_Stereo.aax Es - Teil 7_B004WNC7SE_LC_128_44100_Stereo.aax

Jahre des Jägers - T_B07P43X7WG_LC_128_44100_Stereo.aax Jahre des Jägers - T_B07P55DJQT_LC_128_44100_Stereo.aax Jahre des Jägers - T_B07P56L4K9_LC_128_44100_Stereo.aax Jahre des Jägers - T_B07P56WBHK_LC_128_44100_Stereo.aax Jahre des Jägers - T_B07P558R23_LC_128_44100_Stereo.aax Jahre des Jägers - T_B07P578Z9F_LC_128_44100_Stereo.aax

und hier alle 13 Metadaten Dateien als Zip

content_metadata ES und jahre des Jägers .zip

Alle Dateien liegen in den Standard Verzeichnissen local state content. bzw Filescache.

Viel Erfolg !

audiamus commented 4 years ago

Hier die Dateinamen und alle 13 Metadaten Dateien als Zip

Ich danke Dir. Das wird jetzt ein wenig dauern, bis ich mir meine Test-aax-Dateien so zurecht gebogen habe, dass sie auch von ihren Tags her passen. Auf den ersten Blick sehe ich nämlich wieder keinerlei Ungereimtheiten. :confused:

Falls alles nichts hilft, werde ich einen Logging-Mechanismus einbauen, evtl als Beta. Spätestens damit und ggf in mehreren Stufen sollte es möglich sein, die Ursache zu finden. Aber vielleicht geht es ja auch schneller...

alurio commented 4 years ago

Okay, bin gespannt woran es liegt, berichte mal, wenn du es ergründet hast.

audiamus commented 4 years ago

Ich denke, ich hab's. Alle Teile, die die Kapitelnamen ignorieren, zeigen eine Gemeinsamkeit in der Analyse, die AAX Audio Converter für die zugehörigen content_meta.json durchführt. Jeweils ein Kapitel weist eine Länge von 0 ms aus. Das ist natürlich Unsinn, und ein Fehler seitens Audible. Der Kapitelname, der da eigentlich gesprochen werden müsste, wird dann wohl dem vorigen oder dem nächsten Kapitel zugeschlagen.

Wie damit umgehen? Bisher führt das zum Abbruch und Rückgriff auf die AAX-Kapitelnummern, bei mehrteiligen Büchern dann für das ganze Buch.

Was man vielleicht machen könnte, ist de-facto leere Audio-Dateien anlegen, mit einem Audiostrom minimaler Länge (falls das möglich ist), aber allen Tags.

alurio commented 4 years ago

Hallo Audiamus!

Hmm, schwer zu lösen, wenn Audible da Mist gebaut hat. Aber jetzt weiß man zumindest wo das Problem liegt. Kannst ja mal ausprobieren, ob das mit der quasi leeren Datei funktioniert. Gruß !

alurio commented 4 years ago

Gutem Morgen!

Eine Sache noch,die mir gerade einfällt. Ich habe noch ein Buch, da sind die Kapitel auch schlampig umgesetzt. Shogun von James Clavel. Da gibt es mehrere 0 Sekunden lange Kapitel die der AAx Audioconverte auch tatsächlich erstellt. Die Information die eigentlich in die Leeren Kapitel gehört hängt dann am Nachfolgendem Kapitel dran. Warum er sich da anders verhält als bei King/ Winslow ist ja vielleicht interessant oder ? Gruß

audiamus commented 4 years ago

Da gibt es mehrere 0 Sekunden lange Kapitel die der AAx Audioconverte auch tatsächlich erstellt.

Die Entscheidung fällt in AudibleAppContentMetadata.cs, Zeilen 45-47. Findet sich in der Kapitelliste in content_meta.json mindestens ein Kapitel, wo length_ms gleich 0 oder der title leer ist, dann wird der Versuch, die Kapitelnamen zu verwenden, abgebrochen.

bool hasBlanks = metaChapters
  .Where (c => string.IsNullOrWhiteSpace (c.title) || c.length_ms == 0).Any ();
if (hasBlanks)
  return;

Nur wenn solche Anomalien nicht auftreten, werden die hier gefundenen Kapitel als Chapters2 in den zu bearbeitenden Buchteil übernommen, Zeile 56 a.a.O.

Das widerspricht aber ein wenig Deiner Beobachtung. Wie also sieht die content_meta.json für Dein Beispiel genau aus, wo die Länge 0 akzeptiert zu werden scheint?

In den Code-Zeilen im Auszug hier kommen Lambda-Ausdrücke und Language Integrated Queries (LINQ) zum Einsatz, eine geniale Erweiterung der eigentlich objektorientierten Sprache C# um Elemente einer "funktionalen" Sprache. Die LINQ-Methoden wie Where() oder Any() sind sogenannte Extension Methods, mit denen sich ein "Fluent API" (jeder nächste Funktionsaufruf verwendet das Ergebnis des vorigen) besonders gut lesbar implementieren lässt.

alurio commented 4 years ago

Hallo !

Ja das ist mir klar dass das Widersprüchlich Ist. Ich schicke dir heute Abend mal die 5 Content Metas zu shogun, Dann kannst du Untersuchen wo genau der Unterschied im Vergleich zu King und Winslow liegt. Es muss ja einen geben.

Viele Grüße

audiamus notifications@github.com schrieb am Do., 27. Feb. 2020, 09:38:

Da gibt es mehrere 0 Sekunden lange Kapitel die der AAx Audioconverte auch tatsächlich erstellt.

Die Entscheidung fällt in AudibleAppContentMetadata.cs https://github.com/audiamus/AaxAudioConverter/blob/master/src/AaxAudioConverterLib/AudibleAppContentMetadata.cs, Zeilen 45-47. Findet sich in der Kapitelliste in content_meta.json mindestens ein Kapitel, wo length_ms gleich 0 oder der title leer ist, dann wird der Versuch, die Kapitelnamen zu verwenden, abgebrochen.

bool hasBlanks = metaChapters

.Where (c => string.IsNullOrWhiteSpace (c.title) || c.length_ms == 0).Any ();

if (hasBlanks)

return;

Nur wenn solche Anomalien nicht auftreten, werden die hier gefundenen Kapitel als Chapters2 in den zu bearbeitenden Buchteil übernommen, Zeile 56 a.a.O.

Das widerspricht aber ein wenig Deiner Beobachtung. Wie also sieht die content_meta.json für Dein Beispiel genau aus, wo die Länge 0 akzeptiert zu werden scheint?

In den Code-Zeilen im Auszug hier kommen Lambda-Ausdrücke und Language Integrated Queries (LINQ) zum Einsatz, eine geniale Erweiterung der eigentlich objektorientierten Sprache C# um Elemente einer "funktionalen" Sprache. Die LINQ-Methoden wie Where() oder Any() sind sogenannte Extension Methods, mit denen sich ein "Fluent API" (jeder nächste Funktionsaufruf verwendet das Ergebnis des vorigen) besonders gut lesbar implementieren lässt.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/audiamus/AaxAudioConverter/issues/13?email_source=notifications&email_token=AOUMUYNNE3XWLEN55R7C6L3RE53ZHA5CNFSM4KZ6PR3KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENDOOTY#issuecomment-591849295, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYK6C3E24NKAFQY3ZNTRE53ZHANCNFSM4KZ6PR3A .

alurio commented 4 years ago

Hallo Audiamus !

Hier die Content Metas von Shogun, dort habe ich wie gesagt beobachtet, das mehrere Dateien mit allen Tags aber der Länge 0 Sekunden erstellt wurden, ist in der Audible Bibliothek genauso gewesen, also schlampig implementiert.

content_metadata shogun .zip

Gruß !

alurio commented 4 years ago

Hallo !

Ich rippe Shogun gerade nochmal, es gib mehrere Phänomene : a) Das Kapitel Book two wird erstellt, hat eine Länge von 2 Sekunden, enthält aber nur stille. Die Stelle wo Der Sprecher part 2 sagt hängt dafür an Chapter 10 dran Book 3 taucht 2x auf ( in der Zählung des AAX Audi Converters sowohl Track 34 als auch Track 36 , länge jeweils 0 Sekunden. Die gesprochen Information Book 3 hängt an chapter 30 dran in der Zählung des AAX Audiconverter Track 35 Book 3 taucht übrigens auch nochmal auf, als Track 49, ebenfalls mit Länge 0:00 Minuten Vielleicht ist da der Übergang zwischen Download Teilen? Bei Book 4, Book 6 und Book 5 übrigens genauso, Tracks werden erstellt sind aber 0 Sekunden lang. Warum er dass hier macht bei den anderen beiden Büchern aber die Konvertierung abbricht ist interessant.

. b)

alurio commented 4 years ago

ps Book Two tauch auch ein zweites mal als 0 sekunden Datei auf, als Track 19

Also wie gesagt hier gibt es leere Dateien.

audiamus commented 4 years ago

Dankeschön. Ich werde versuchen, jede einzelne Deiner Beobachtungen im Debugger nachzuvollziehen. Das sollte auch möglich sein, schließlich arbeitet das Programm ja deterministisch. :sunglasses:

audiamus commented 4 years ago

So, alles erklärbar. :relaxed:

Die Kapitel, die nachher als 0 sec erscheinen, sind tatsächlich mit der Länge 1ms angegeben. Und 1 ms scheint FFmpeg auch als Parameter zu akzeptieren, sonst hättest Du Audio-Datei dafür nicht bekommen.

Das doppelte "Book Two" usw. hängt tatsächlich mit der Aufspaltung in Teile zusammen. Die Teile folgen nicht der Buchstruktur. "Book Two" beginnt bereits in Teil 1, zwischen Kapitel 9 und 10. Beim 2. Teil, der mit Kapitel 16 beginnt, wird "Book Two" nochmal vorangestellt. Wenn Du jetzt "Kurze" und sehr "Kurze Kapitel" auf den voreingestellten Werten lässt, könnte es sein, dass AAX Audio Converter diese Wiederholungen mit raus filtert, aber nur dann, wenn die "Book"-Ansage mit in die gut 7 Sekunden passt, die für die Einleitung des jeweils nächsten Teils angegeben ist. (Man kann übrigens in VLC nachschauen, aus welchem Teil ein Kapitel stammt und wo der Übergang ist. Ich vergebe für jeden Buchteil (aax-Datei) eine neue Disc-Number, so wie beim klassischen Doppel- und Dreifach-CD/LP-Album. )

Für mich heißt das jetzt, dass die Kapitel, die tatsächlich auf 0 ms stehen, auf 1ms hoch gesetzt werden. Dann müsste es durchlaufen, und alle Kapiteltexte sollten sich in den erzeugten Dateien wiederfinden..

alurio commented 4 years ago

Fein, na Wenn sich das machen lässt, 0 MS Abgaben durch das Programm " künstlich " hochzusetzen ist das ja super, dann ist das Problem ja lösbar und meine Zuarbeit hat sich gelohnt Freue mich dann auf auf Version 1.8

audiamus commented 4 years ago

Mit der heute veröffentlichten Version 1.8 nun erledigt.

alurio commented 4 years ago

Hallo !

Leider hast du das Programm zumindest bei mir zerschossen. Soll heißen, das Kaputelnamenproblem ist behoben, aber er bricht jetzt grundsätzlich das Transkodieren mit der Meldung 0 Dateien konvertiert ab. Ich habe ganz normal Auto Upgedatet, sonst nix verändert.

Gruß

audiamus notifications@github.com schrieb am Sa., 7. März 2020, 18:18:

Mit der heute veröffentlichten Version 1.8 nun erledigt.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/audiamus/AaxAudioConverter/issues/13?email_source=notifications&email_token=AOUMUYIDABWMRI47PYWI2TDRGJ6UZA5CNFSM4KZ6PR3KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEOD6XCY#issuecomment-596110219, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOUMUYNKYIYPDMMPDWYOV5DRGJ6UZANCNFSM4KZ6PR3A .