m4b-tool
ist ein Wrapper für ffmpeg
und mp4v2
zum Zusammenführen, Teilen oder Bearbeiten von Hörbuchdateien mit Kapiteln. Obwohl m4b-tool
für die Verarbeitung von m4b-Dateien konzipiert ist, sollten nahezu alle Audioformate unterstützt werden, z. B. mp3, aac, ogg, alac und flac.
Wenn Sie eines meiner Projekte nutzen und es hilfreich finden, denken Sie bitte über eine Spende nach, um mich zu unterstützen. Ich habe vor, das Geld zur Unterstützung anderer Open-Source-Projekte oder gemeinnütziger Zwecke zu verwenden. Danke schön!
>= 25.00$
Besonderer Dank geht an alle Sponsoren, die einen monatlichen Betrag von >= 25.00$
spenden.
Name | Menge |
---|---|
numinit | 25,00 $ |
Holen Sie sich Nix und stellen Sie sicher, dass Flakes aktiviert sind.
nix run github:sandreas/m4b-tool
oder nix run github:sandreas/m4b-tool#m4b-tool-libfdk
nix build github:sandreas/m4b-tool
oder nix build github:sandreas/m4b-tool#m4b-tool-libfdk
./result/bin/m4b-tool
nix develop
composer2nix --executable --composition=composer.nix
aus, um die .nix-Dateien zu aktualisieren Ich habe ein Experiment gestartet, das jetzt ein frühes Alpha-Level erreicht hat und ausprobiert werden kann. Das Befehlszeilentool ist in C#
geschrieben, vollständig Open Source und heißt tone
. Es verfügt bereits über einen ziemlich guten Funktionsumfang. Wenn Sie es also ausprobieren möchten, finden Sie es hier:
https://github.com/sandreas/tone
Diese Ankündigung bedeutet NICHT, dass das m4b-tool
veraltet ist oder bald veraltet sein wird. Die Entwicklung von m4b-tool
wird weitergehen (zumindest bis Tone über einen ähnlichen Funktionsumfang wie m4b-tool
verfügt). Es geht lediglich darum, ein alternatives Tool für Funktionen zu haben, das möglicherweise Einschränkungen aufweist.
Viel Spaß, ich kann es kaum erwarten, Ihr Feedback zu erhalten.
Leider bin ich im Moment ziemlich beschäftigt, daher ist m4b-tool 0.4.2
sehr alt. Da es nicht geplant ist, eine neuere Version ohne vollständige Dokumentation zu veröffentlichen, gibt es nur die neueste Vorabversion mit Fehlerbehebungen. Es ist bereits ziemlich stabil. Wenn Sie also Fehler mit v0.4.2
feststellen, versuchen Sie es bitte mit der neuesten Vorabversion, falls das Problem dort bereits behoben wurde.
Danke, Sandreas
https://pilabor.com
merge
eine Reihe von Audiodateien (z. B. MP3 oder AAC) zu einer einzigen m4b-Datei zusammensplit
eine einzelne M4B-Datei kapitelweise in mehrere Ausgabedateien oder ein flac
codiertes Album über ein Cue-Sheet in einzelne Titel aufchapters
für eine vorhandene M4B-Datei über die Stilleerkennung oder Musicbrainz hinzu oder passen Sie sie an Alle Audiodateien im Verzeichnis data/my-audio-book
in der Datei data/merged.m4b
merge
(Tags bleiben erhalten und data/my-audio-book/cover.jpg
und data/my-audio-book/description.txt
werden eingebettet , falls verfügbar)
m4b-tool merge "data/my-audio-book/" --output-file="data/merged.m4b"
split
eine große M4B-Datei kapitelweise in mehrere MP3-Dateien unter data/my-audio-book_splitted/
(Tags bleiben erhalten, data/my-audio-book_splitted/cover.jpg
wird erstellt, wenn m4b ein Cover enthält)
m4b-tool split --audio-format mp3 --audio-bitrate 96k --audio-channels 1 --audio-samplerate 22050 "data/my-audio-book.m4b"
chapters
können versuchen, vorhandene Kapitel eines M4B durch Stilleerkennung anzupassen
m4b-tool chapters --adjust-by-silence -o "data/destination-with-adjusted-chapters.m4b" "data/source-with-misplaced-chapters.m4b"
Da der am häufigsten verwendete Unterbefehl von m4b-tool
merge
zu sein scheint, sprechen wir über Best Practices ...
Leider hat m4b-tool
viele Abhängigkeiten. Nicht nur Einzeiler: Wenn Sie die beste Qualität und Tagging-Unterstützung erhalten möchten, müssen viele Abhängigkeiten manuell mit zusätzlichen Optionen kompiliert werden. Deshalb sollten Sie sich das Docker-Image ansehen, das mit allem Drum und Dran wie Top-Audioqualität, Top-Tagging-Unterstützung und einfacher Installation ausgestattet ist und nahezu keine Nachteile aufweist.
Hinweis: Wenn Sie Windows verwenden, kann es schwierig sein, es zum Laufen zu bringen
Wenn Sie Hörbücher zusammenführen, sollten Sie diese vorbereiten – die folgende Verzeichnisstruktur hilft sehr, auch wenn Sie nur ein einzelnes Hörbuch zusammenführen:
input/<main genre>/<author>/<title>
oder wenn es eine Serie ist
input/<main genre>/<author>/<series>/<series-part> - <title>
Beispiele:
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/
input/Fantasy/J.K. Rowling/Harry Potter/1 - Harry Potter and the Philosopher's Stone/
Hinweis: Wenn Ihr Hörbuchtitel ungültige Pfadzeichen wie
/
enthält, ersetzen Sie diese einfach durch einen Bindestrich-
.
Da Sie nun fast immer ein Cover und eine Beschreibung für Ihr Hörbuch wünschen, sollten Sie im Hauptverzeichnis folgende Dateien hinzufügen:
cover.jpg
(oder cover.jpeg
oder cover.png
)description.txt
(Achten Sie darauf, für den Inhalt UTF-8
-Textdateikodierung zu verwenden.)Beispiele:
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/cover.jpg
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/description.txt
Hinweis:
m4b-tool
findet und bindet diese Dateien automatisch ein, schlägt jedoch nicht fehl, wenn sie nicht vorhanden sind
Kapitel eignen sich gut als Wegpunkte für Ihr Hörbuch. Sie helfen dabei, sich an die letzte Position zu erinnern und das Erlebnis insgesamt zu verbessern.
Wenn Sie Kapitel manuell anpassen möchten, können Sie eine chapters.txt
(gleiche Position wie cover.jpg
) mit folgendem Inhalt hinzufügen ( <chapter-start>
<chapter-title>
):
00:00:00.000 Intro
00:04:19.153 This is
00:09:24.078 A way to add
00:14:34.500 Chapters manually
Wenn Ihre Eingabedateien mit Tags versehen sind, werden diese Tags verwendet, um die Kapitelmetadaten anhand ihres title
zu erstellen. Wenn Sie also Ihre Eingabedateien mit gültigen Kapitelnamen als title
kennzeichnen, erhalten Sie eine schöne und saubere m4b
-Datei mit gültigen Kapitelnamen.
Eine weitere tolle Funktion seit m4b-tool
v.0.4.0 ist der Parameter --max-chapter-length
. Oft sind die einzelnen Eingabedateien zu groß, was zu sehr langen Kapiteln führt. Das kann lästig sein, wenn man zu einer bestimmten Stelle springen möchte, da man dann vor- oder zurückspulen und die Taste lange gedrückt halten muss, statt einfach nur ein paar Mal zurück oder vorwärts zu tippen. Um Unterkapitel automatisch hinzuzufügen, können Sie Folgendes bereitstellen:
--max-chapter-length=300,900
Dies führt zum m4b-tool
Unterkapitel werden wie das Original benannt und erhalten einen zusätzlichen Index. Dies ist eine gute Möglichkeit, die echten Namen beizubehalten, aber keine Kapitel mit einer zu langen Dauer zu haben.
Wenn Sie einen iPod besitzen, kann es zu Problemen mit zu langen Hörbüchern kommen, da iPods nur 32-Bit-Abtastraten unterstützen. Wenn Ihr Hörbuch mit einer Abtastrate von 22050 Hz länger als 27 Stunden ist, können Sie --adjust-for-ipod
verwenden, um Ihr Hörbuch automatisch herunterzuskalieren, was zu einer geringeren Qualität führt, aber zumindest auf Ihrem guten alten iPod funktioniert ...
m4b-tool
unterstützt mehrere Konvertierungsaufgaben parallel mit dem Parameter --jobs
(z. B. --jobs=2
). Wenn Sie mehr als eine Datei konvertieren müssen, was häufig der Fall ist, verdoppeln Sie die Zusammenführungsgeschwindigkeit nahezu, indem Sie den Parameter --jobs=2
angeben (oder vervierfachen Sie ihn mit --jobs=4
, wenn Sie ein Quad-Core-System usw. haben). .). Geben Sie keine höhere Zahl an als die Anzahl der Kerne auf Ihrem System – dies verlangsamt die Zusammenführung ...
Hinweis: Wenn Sie die Konvertierung auf allen Ihren Kernen ausführen, führt dies zu einer fast 100-prozentigen CPU-Auslastung, was zu einer langsameren Systemleistung führen kann
--batch-pattern
In m4b-tool v.0.4.0
wurde die Funktion --batch-pattern
hinzugefügt. Es kann zum Stapelkonvertieren mehrerer Hörbücher auf einmal verwendet werden, aber auch zum Konvertieren nur eines einzelnen Hörbuchs – da Sie Tags aus einer vorhandenen Verzeichnisstruktur erstellen können.
Hinweis: Der
output-file
muss ein Verzeichnis sein, wenn--batch-pattern
verwendet wird.
Es werden sogar mehrere --batch-pattern
Parameter unterstützt, wobei die erste Übereinstimmung zuerst verwendet wird. Wenn Sie also die Verzeichnisstruktur wie oben beschrieben erstellt haben, müssen Sie mit dem letzten Befehl input/Fantasy/Harry Potter/1 - Harry Potter and the Philosopher's Stone/
mit output/Fantasy/Harry Potter/1 - Harry Potter and the Philosopher's Stone.m4b
würde so aussehen:
m4b-tool merge -v --jobs=2 --output-file="output/" --max-chapter-length=300,900 --adjust-for-ipod --batch-pattern="input/%g/%a/%s/%p - %n/" --batch-pattern="input/%g/%a/%n/" "input/"
Im Modus
--batch-pattern
werden vorhandene Dateien standardmäßig übersprungen
Wenn Sie die oben genannten Schritte mit dem Docker-Image durchgeführt oder alle Abhängigkeiten installiert und kompiliert haben, sollten Sie das folgende Ergebnis erhalten:
libfdk_aac
Encodersgenre
, author
, title
, sorttitle
usw. aus der Verwendung von --batch-pattern
cover.jpg
(oder cover.jpeg
oder cover.png
) und description.txt
vorhanden sind, werden ein cover
, eine description
und ein longdesc
eingebettet Um Docker mit m4b-tool
zu verwenden, müssen Sie zunächst Folgendes tun
pull
das offizielle Docker-Image (empfohlen)build
die Dockerfile
im Hauptverzeichnis Die offiziellen Docker-Images sind auf DockerHub verfügbar. Sie sind etwas experimentell, haben sich aber bewährt. Das latest
Tag gilt als Wegbereiter für die neuesten Funktionen und Korrekturen. Hin und wieder wird ein datiertes Tag veröffentlicht (z. B. sandreas/m4b-tool:2022-09-25
), das als ziemlich stabil gilt, um sicherzustellen, dass ein defektes latest
Image nicht Ihr gesamtes Setup zerstört.
# pull the image
docker pull sandreas/m4b-tool:latest
# create an alias for m4b-tool running docker
alias m4b-tool='docker run -it --rm -u $(id -u):$(id -g) -v "$(pwd)":/mnt sandreas/m4b-tool:latest'
# testing the command
m4b-tool --version
Hinweis: Wenn Sie den oben genannten Alias verwenden, beachten Sie, dass Sie keine absoluten Pfade (z. B.
/tmp/data/audiobooks/harry potter 1
) oder symbolische Links verwenden können. Sie müssen in das Verzeichnis wechseln und relative Pfade verwenden (z. B.cd /tmp/data && m4b-tool merge "audiobooks/harry potter 1" --output-file harry.m4b
)
Um manuell einen Docker-Container für eine bestimmte m4b-tool
Version zu erstellen, muss ein zusätzlicher Parameter zum Herunterladen einer bestimmten Version in das Image bereitgestellt werden, z. B. für v.0.4.1
:
# clone m4b-tool repository
git clone https://github.com/sandreas/m4b-tool.git
# change directory
cd m4b-tool
# build docker image - this will take a while
docker build . -t m4b-tool
# create an alias for m4b-tool running docker
alias m4b-tool='docker run -it --rm -u $(id -u):$(id -g) -v "$(pwd)":/mnt m4b-tool'
# testing the command
m4b-tool --version
# use the specific pre-release from 2022-07-16
docker build . --build-arg M4B_TOOL_DOWNLOAD_LINK=https://github.com/sandreas/m4b-tool/files/9125095/m4b-tool.tar.gz -t m4b-tool
Hinweis: Sie können die entsprechende Variable auch einfach in der
Dockerfile
bearbeiten.
Entwickler oder Experten möchten möglicherweise einen vollständigen benutzerdefinierten Build von m4b-tool
ausführen oder den Code selbst erstellen (z. B. wenn Sie das Repository geforkt und einige Patches angewendet haben). Wenn dies der Fall ist, können Sie den benutzerdefinierten Build relativ zur Dockerfile
in dist/m4b-tool.phar
speichern und dann einen Standard-Build durchführen.
# dist/m4b-tool.phar is available
docker build . -t m4b-tool
Danach sollte der benutzerdefinierte Build in das Docker-Image integriert werden.
Unter MacOS können Sie den tollen Paketmanager brew
verwenden, um m4b-tool
zu installieren.
Um die beste Audioqualität zu erzielen, ist ein gewisser zusätzlicher Aufwand erforderlich. Sie müssen ffmpeg
mit dem unfreien Codec libfdk_aac
neu kompilieren . Dies erfordert die Deinstallation des standardmäßigen ffmpeg
Pakets, falls es installiert ist, da brew
die Möglichkeit für zusätzliche Optionen weggelassen hat. Es gibt kein offizielles ffmpeg-with-options
-Repository, aber ein ziemlich gutes tap
, mit dem Sie Zeit sparen können.
# FIRST INSTALL ONLY: if not already done, remove existing ffmpeg with default audio quality options
# check for ffmpeg with libfdk and uninstall if libfdk is not already available
[ -x "$(which ffmpeg)" ] && (ffmpeg -hide_banner -codecs 2>&1 | grep libfdk || brew uninstall ffmpeg)
# tap required repositories
brew tap sandreas/tap
brew tap homebrew-ffmpeg/ffmpeg
# check available ffmpeg options and which you would like to use
brew options homebrew-ffmpeg/ffmpeg/ffmpeg
# install ffmpeg with at least libfdk_aac for best audio quality
brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-fdk-aac
# install m4b-tool
brew install sandreas/tap/m4b-tool
# check installed m4b-tool version
m4b-tool --version
Wenn das oben Genannte bei Ihnen nicht funktioniert hat oder Sie m4b-tool
erst einmal ausprobieren möchten, bevor Sie es in der Produktion verwenden, möchten Sie vielleicht den schnellen und einfachen Weg ausprobieren. Es wird funktionieren, aber Sie erhalten eine geringere Audioqualität und es gibt keine Unterstützung für Sortier-Tagging .
# tap m4b-tool repository
brew tap sandreas/tap
# install dependencies
brew install ffmpeg fdk-aac-encoder mp4v2
# install m4b-tool with acceptable audio quality and no sort tagging
brew install --ignore-dependencies sandreas/tap/m4b-tool
# install all dependencies
sudo apt install ffmpeg mp4v2-utils fdkaac php-cli php-intl php-json php-mbstring php-xml
# install / upgrade m4b-tool
sudo wget https://github.com/sandreas/m4b-tool/releases/download/v.0.4.2/m4b-tool.phar -O /usr/local/bin/m4b-tool && sudo chmod +x /usr/local/bin/m4b-tool
# check installed m4b-tool version
m4b-tool --version
Hinweis: Wenn Sie die bestmögliche Audioqualität erhalten möchten, müssen Sie
ffmpeg
mit dem hochwertigen Encoderfdk-aac
(--enable-libfdk_aac
) kompilieren – siehe https://trac.ffmpeg.org/wiki/CompilationGuide/ Ubuntu für eine Schritt-für-Schritt-Anleitung zum Kompilieren vonffmpeg
.
m4b-tool
ist in PHP
geschrieben und verwendet ffmpeg
, mp4v2
und optional fdkaac
für hocheffiziente Codecs zur Durchführung von Konvertierungen. Daher benötigen Sie in Ihrem %PATH% die folgenden Tools:
php
>= 7.1 mit aktivierter mbstring
Erweiterung (https://php.net)ffmpeg
(https://www.ffmpeg.org)mp4v2
( mp4chaps
, mp4art
usw. https://github.com/sandreas/m4b-tool/releases/download/v0.2/mp4v2-windows.zip)fdkaac
(optional, nur wenn Sie eine hohe Effizienz für niedrige Bitraten <= 32k benötigen, http://wlc.io/2015/06/20/fdk-aac/ – Achtung: nicht offiziell!)Um die Abhängigkeiten zu überprüfen, sollte die Ausführung der folgenden Befehle über die Befehlszeile eine ähnliche Ausgabe anzeigen:
$ php -v
Copyright (c) 1997-2018 The PHP Group [...]
$ ffmpeg -version
ffmpeg version 4.1.1 Copyright (c) 2000-2019 the FFmpeg developers [...]
$ mp4chaps --version
mp4chaps - MP4v2 2.0.0
$ fdkaac
fdkaac 1.0.0 [...]
Wenn Sie sicher sind, dass alle Abhängigkeiten installiert sind, besteht der nächste Schritt darin, die neueste Version von m4b-tool
herunterzuladen
https://github.com/sandreas/m4b-tool/releases
Abhängig vom Betriebssystem können Sie m4b-tool.phar
in m4b-tool
umbenennen und m4b-tool --version
direkt über die Befehlszeile ausführen. Wenn Sie sich nicht sicher sind, können Sie jederzeit mit dem Befehl php m4b-tool.phar --version
überprüfen, ob die Installation erfolgreich war. Dies sollte auf jedem System funktionieren.
Wenn Sie den neuesten Quellcode mit allen neuen Funktionen und Korrekturen verwenden möchten, können Sie auch aus dem Quellcode erstellen. Der aktuelle Build ist möglicherweise instabil und sollte nur zu Testzwecken verwendet werden oder wenn Sie eine bestimmte Funktion benötigen, die noch nicht veröffentlicht wurde.
mp4v2
für eine genaue SortierreihenfolgeDie meisten Hörbücher werden nicht in alphabetischer Reihenfolge veröffentlicht. Ein prominentes Beispiel ist Harry Potter. Wenn Sie also alle Harry-Potter-Hörbücher haben, hängt das von Ihrem Player ab, aber wahrscheinlich sind sie nicht in der richtigen Reihenfolge aufgeführt ... mal sehen, wie die alphabetische Reihenfolge aussehen würde:
Und die richtige Reihenfolge wäre gewesen:
Nun, dafür gibt es eine Lösung. Sie müssen das Hörbuch mit einem benutzerdefinierten sortname
und/oder sortalbum
versehen. Wenn Ihr Player diese Tags unterstützt, ist die Reihenfolge jetzt korrekt, auch wenn der Titel noch der Originaltitel ist. Um dies zu erreichen, musste ich eine benutzerdefinierte Version von mp4v2
(genauer gesagt mp4tags
) erstellen, um Optionen für diese Tags hinzuzufügen und die Pseudo-Tags --series
und --series-part
hinzuzufügen.
Wenn Sie also Folgendes tun:
m4b-tool merge --name="Harry Potter and the Chamber of Secrets" --series="Harry Potter" --series-part="2" --output-file="output/Harry Potter and the Chamber of Secrets.m4b" "input/Harry Potter and the Chamber of Secrets"
Es würde Folgendes zur Folge haben:
Harry Potter and the Chamber of Secrets
Harry Potter 2 - Harry Potter and the Chamber of Secrets
mp4v2
Im Docker-Image ist die benutzerdefinierte Version bereits installiert
git clone https://github.com/sandreas/mp4v2
cd mp4v2
./configure
make && sudo make install
Im m4b-tool
werden alle Audiokonvertierungen mit ffmpeg
durchgeführt, was mithilfe der kostenlosen Encoder zu einer ziemlich guten Audioqualität führt. Allerdings erfordert die beste Qualität etwas mehr Aufwand. Wenn Sie also die kostenlosen Encoder verwenden, zeigt m4b-tool
möglicherweise den folgenden Hinweis an:
Ihre ffmpeg-Version kann mit dem Encoder aac anstelle von libfdk_aac kein AAC in höchster Qualität erzeugen
Das ist eigentlich kein Problem, denn der Unterschied zwischen dem aac
und libfdk_aac
-Encoder ist in den meisten Fällen kaum wahrnehmbar. Um den Hinweis zu umgehen und die bestmögliche Audioqualität zu erhalten, müssen Sie jedoch einen unfreien Encoder verwenden, der nicht standardmäßig in ffmpeg
integriert ist (aus Lizenzgründen). Je nachdem, welches Betriebssystem Sie verwenden, erfordert die Installation des Non-Free-Encoders möglicherweise etwas zusätzliche Fähigkeiten, Mühe und Zeit (siehe die Hinweise für Ihr Betriebssystem oben). Sie müssen entscheiden, ob sich der zusätzliche Aufwand für die etwas bessere Qualität lohnt. Wenn Sie das Docker-Image verwenden, sollten Sie standardmäßig die beste Qualität erhalten.
Wenn Sie sehr niedrige Bitraten (<= 32k) verwenden, können Sie auch hocheffiziente Profile verwenden, um die Audioqualität weiter zu verbessern (z. B. --audio-profile=aac_he
für Mono). Leider erzeugt die hocheffiziente Implementierung von ffmpeg
Audiodateien, die mit vielen Playern (einschließlich iTunes) nicht kompatibel sind. Um hocheffiziente Dateien zu erstellen, die zumindest mit den meisten gängigen Playern kompatibel sind, müssen Sie zunächst fdkaac
installieren.
Weitere Details:
Sie glauben, dass es ein Problem mit m4b-tool
gibt? Werfen Sie zunächst einen Blick auf die unten aufgeführten bekannten Probleme. Wenn dies nicht hilft, geben Sie beim Hinzufügen eines Problems bitte die folgenden Informationen an:
m4b-tool merge my-audio-book/ --output-file merged.m4b
the resulting file merged.m4b is only 5kb
Beispiel:
Title: m4b-tool does not embed covers
If i run m4b-tool with a folder containing a cover.png, it does not embed the cover and shows an error message.
OS: Ubuntu 16.04 LTS
Command: `m4b-tool merge my-audio-book/ ---output-file merged.m4b`
Error: Cannot embed cover, cover is not a valid image file
Attached files: cover.png
Wenn Sie PHP-Ausnahmen erhalten, handelt es sich in den meisten Fällen um ein Konfigurationsproblem mit PHP. Wenn Sie mit der PHP-Konfiguration nicht vertraut sind, können Sie diese Anweisungen befolgen, um einige bekannte Probleme zu beheben:
[Exception]
charset windows-1252 is not supported - use one of these instead: utf-8
Dies geschieht vor allem unter Windows, da die mbstring
-Erweiterung zur internen Konvertierung von Zeichensätzen verwendet wird, sodass Sonderzeichen wie deutsche Umlaute auf jeder Plattform unterstützt werden. Um dies zu beheben, müssen Sie die mbstring-Erweiterung aktivieren:
Führen Sie php --ini
in der Befehlszeile aus:
C:>php --ini
...
Loaded Configuration File: C:Program Filesphpphp.ini
Öffnen Sie die Konfigurationsdatei (z. B. C:Program Filesphpphp.ini
) in einem Texteditor und suchen Sie nach extension=
. Unter Windows sollte ein Element wie dieses vorhanden sein:
;extension=php_mbstring.dll
entferne das ;
So aktivieren Sie die Erweiterung:
extension=php_mbstring.dll
Jetzt sollte alles wie erwartet funktionieren.
Die folgende Liste enthält alle möglichen Befehle, einschließlich merge
, split
und chapters
zusammen mit der Referenz der in jedem Befehl verfügbaren Parameter.
Mit m4b-tool
können Sie eine Reihe von Audiodateien zu einer einzigen m4b-Hörbuchdatei zusammenführen.
m4b-tool merge "data/my-audio-book" --output-file="data/my-audio-book.m4b"
Dadurch werden alle Audiodateien im Ordner data/my-audio-book
in my-audio-book.m4b
zusammengeführt, wobei der Tag-Titel jeder Datei zum Generieren von Kapiteln verwendet wird.
Wenn eine Datei data/my-audio-book/cover.jpg
(oder cover.jpeg
oder cover.png
) vorhanden ist, wird diese als Cover für die resultierende m4b-Datei verwendet.
Hinweis: Wenn Sie Audiodateien ohne Tags verwenden, können Sie eine Musicbrainz-ID angeben, um die richtigen Kapitelnamen zu erhalten. Weitere Informationen finden Sie im Befehlskapitel.
Alle Optionen finden Sie unter m4b-tool merge --help
:
Description:
Merges a set of files to one single file
Usage:
merge [options] [--] <input> [<more-input-files>...]
Arguments:
input Input file or folder
more-input-files Other Input files or folders
Options:
--logfile[=LOGFILE] file to log all output [default: ""]
--debug enable debug mode - sets verbosity to debug, logfile to m4b-tool.log and temporary encoded files are not deleted
-f, --force force overwrite of existing files
--no-cache clear cache completely before doing anything
--ffmpeg-threads[=FFMPEG-THREADS] specify -threads parameter for ffmpeg - you should also consider --jobs when merge is used [default: ""]
--platform-charset[=PLATFORM-CHARSET] Convert from this filesystem charset to utf-8, when tagging files (e.g. Windows-1252, mainly used on Windows Systems) [default: ""]
--ffmpeg-param[=FFMPEG-PARAM] Add argument to every ffmpeg call, append after all other ffmpeg parameters (e.g. --ffmpeg-param="-max_muxing_queue_size" --ffmpeg-param="1000" for ffmpeg [...] -max_muxing_queue_size 1000) (multiple values allowed)
-a, --silence-min-length[=SILENCE-MIN-LENGTH] silence minimum length in milliseconds [default: 1750]
-b, --silence-max-length[=SILENCE-MAX-LENGTH] silence maximum length in milliseconds [default: 0]
--max-chapter-length[=MAX-CHAPTER-LENGTH] maximum chapter length in seconds - its also possible to provide a desired chapter length in form of 300,900 where 300 is desired and 900 is max - if the max chapter length is exceeded, the chapter is placed on the first silence between desired and max chapter length [default: "0"]
--name[=NAME] custom name, otherwise the existing metadata will be used
--sortname[=SORTNAME] custom sortname, that is used only for sorting
--album[=ALBUM] custom album, otherwise the existing metadata for name will be used
--sortalbum[=SORTALBUM] custom sortalbum, that is used only for sorting
--artist[=ARTIST] custom artist, otherwise the existing metadata will be used
--sortartist[=SORTARTIST] custom sortartist, that is used only for sorting
--genre[=GENRE] custom genre, otherwise the existing metadata will be used
--writer[=WRITER] custom writer, otherwise the existing metadata will be used
--albumartist[=ALBUMARTIST] custom albumartist, otherwise the existing metadata will be used
--year[=YEAR] custom year, otherwise the existing metadata will be used
--description[=DESCRIPTION] custom short description, otherwise the existing metadata will be used
--longdesc[=LONGDESC] custom long description, otherwise the existing metadata will be used
--comment[=COMMENT] custom comment, otherwise the existing metadata will be used
--copyright[=COPYRIGHT] custom copyright, otherwise the existing metadata will be used
--encoded-by[=ENCODED-BY] custom encoded-by, otherwise the existing metadata will be used
--cover[=COVER] custom cover, otherwise the existing metadata will be used
--skip-cover skip extracting and embedding covers
--series[=SERIES] custom series, this pseudo tag will be used to auto create sort order (e.g. Harry Potter or The Kingkiller Chronicles)
--series-part[=SERIES-PART] custom series part, this pseudo tag will be used to auto create sort order (e.g. 1 or 2.5)
--audio-format[=AUDIO-FORMAT] output format, that ffmpeg will use to create files [default: "m4b"]
--audio-channels[=AUDIO-CHANNELS] audio channels, e.g. 1, 2 [default: ""]
--audio-bitrate[=AUDIO-BITRATE] audio bitrate, e.g. 64k, 128k, ... [default: ""]
--audio-samplerate[=AUDIO-SAMPLERATE] audio samplerate, e.g. 22050, 44100, ... [default: ""]
--audio-codec[=AUDIO-CODEC] audio codec, e.g. libmp3lame, aac, ... [default: ""]
--audio-profile[=AUDIO-PROFILE] audio profile, when using extra low bitrate - valid values: aac_he, aac_he_v2 [default: ""]
--adjust-for-ipod auto adjust bitrate and sampling rate for ipod, if track is too long (may result in low audio quality)
--fix-mime-type try to fix MIME-type (e.g. from video/mp4 to audio/mp4) - this is needed for some players to prevent an empty video window
-o, --output-file=OUTPUT-FILE output file
--include-extensions[=INCLUDE-EXTENSIONS] comma separated list of file extensions to include (others are skipped) [default: "aac,alac,flac,m4a,m4b,mp3,oga,ogg,wav,wma,mp4"]
-m, --musicbrainz-id=MUSICBRAINZ-ID musicbrainz id so load chapters from
--no-conversion skip conversion (destination file uses same encoding as source - all encoding specific options will be ignored)
--batch-pattern[=BATCH-PATTERN] multiple batch patterns that can be used to merge all audio books in a directory matching the given patterns (e.g. %a/%t for author/title) - parameter --output-file must be a directory (multiple values allowed)
--dry-run perform a dry run without converting all the files in batch mode (requires --batch-pattern)
--jobs[=JOBS] Specifies the number of jobs (commands) to run simultaneously [default: 1]
--use-filenames-as-chapters Use filenames for chapter titles instead of tag contents
--no-chapter-reindexing Do not perform any reindexing for index-only chapter names (by default m4b-tool will try to detect index-only chapters like Chapter 1, Chapter 2 and reindex it with its numbers only)
-h, --help Display this help message
-q, --quiet Do not output any message
-V, --version Display this application version
--ansi Force ANSI output
--no-ansi Disable ANSI output
-n, --no-interaction Do not ask any interactive question
-v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--batch-pattern
Wenn Sie den Parameter --batch-pattern
verwenden, werden die folgenden Platzhalter unterstützt
title
/ name
: %n
sort_name
: %N
album
: %m
,sort_album
: %M
,artist
: %a
,sort_artist
: %A
,genre
: %g
,writer
: %w
,album_artist
: %t
,year
: %y
,description
: %d
,long_description
: %D
,comment
: %c
,copyright
: %C
,encoded_by
: %e
,group(ing)
: %G
,purchase_date
: %U
,series
: %s
,series_part
: %p
, m4b-tool
kann verwendet werden, um ein einzelnes m4b
in eine Datei pro Kapitel oder ein flac
codiertes Album per Cue-Sheet in einzelne Titel aufzuteilen.
m4b-tool split --audio-format mp3 --audio-bitrate 96k --audio-channels 1 --audio-samplerate 22050 "data/my-audio-book.m4b"
Dadurch wird die Datei data/my-audio-book.m4b into
eine MP3-Datei aufgeteilt und die Dateien in data/my-audio-book_splitted/
geschrieben.
Wenn Sie eine flac
Datei mit mehreren Titeln aufteilen möchten, ist ein Cue-Sheet mit dem genauen Dateinamen der flac
erforderlich ( my-album.flac
erfordert my-album.cue
):
# my-album.cue is automatically found and used for splitting
m4b-tool split --audio-format=mp3 --audio-bitrate=192k --audio-channels=2 --audio-samplerate=48000 "data/my-album.flac"
Alle Optionen finden Sie unter m4b-tool split --help
:
Description:
Splits an m4b file into parts
Usage:
split [options] [--] <input>
Arguments:
input Input file or folder
Options:
--logfile[=LOGFILE] file to dump all output [default: ""]
--debug enable debug mode - sets verbosity to debug, logfile to m4b-tool.log and temporary files are not deleted
-f, --force force overwrite of existing files
--no-cache do not use cached values and clear cache completely
--ffmpeg-threads[=FFMPEG-THREADS] specify -threads parameter for ffmpeg [default: ""]
--platform-charset[=PLATFORM-CHARSET] Convert from this filesystem charset to utf-8, when tagging files (e.g. Windows-1252, mainly used on Windows Systems) [default: ""]
--ffmpeg-param[=FFMPEG-PARAM] Add argument to every ffmpeg call, append after all other ffmpeg parameters (e.g. --ffmpeg-param="-max_muxing_queue_size" --ffmpeg-param="1000" for ffmpeg [...] -max_muxing_queue_size 1000) (multiple values allowed)
-a, --silence-min-length[=SILENCE-MIN-LENGTH] silence minimum length in milliseconds [default: 1750]
-b, --silence-max-length[=SILENCE-MAX-LENGTH] silence maximum length in milliseconds [default: 0]
--max-chapter-length[=MAX-CHAPTER-LENGTH] maximum chapter length in seconds - its also possible to provide a desired chapter length in form of 300,900 where 300 is desired and 900 is max - if the max chapter length is exceeded, the chapter is placed on the first silence between desired and max chapter length [default: "0"]
--audio-format[=AUDIO-FORMAT] output format, that ffmpeg will use to create files [default: "m4b"]
--audio-channels[=AUDIO-CHANNELS] audio channels, e.g. 1, 2 [default: ""]
--audio-bitrate[=AUDIO-BITRATE] audio bitrate, e.g. 64k, 128k, ... [default: ""]
--audio-samplerate[=AUDIO-SAMPLERATE] audio samplerate, e.g. 22050, 44100, ... [default: ""]
--audio-codec[=AUDIO-CODEC] audio codec, e.g. libmp3lame, aac, ... [default: ""]
--audio-profile[=AUDIO-PROFILE] audio profile, when using extra low bitrate - valid values (mono, stereo): aac_he, aac_he_v2 [default: ""]
--adjust-for-ipod auto adjust bitrate and sampling rate for ipod, if track is to long (may lead to poor quality)
--name[=NAME] provide a custom audiobook name, otherwise the existing metadata will be used [default: ""]
--sortname[=SORTNAME] provide a custom audiobook name, that is used only for sorting purposes [default: ""]
--album[=ALBUM] provide a custom audiobook album, otherwise the existing metadata for name will be used [default: ""]
--sortalbum[=SORTALBUM] provide a custom audiobook album, that is used only for sorting purposes [default: ""]
--artist[=ARTIST]