m4b-tool
est un wrapper pour ffmpeg
et mp4v2
permettant de fusionner, diviser ou manipuler des fichiers de livres audio avec des chapitres. Bien que m4b-tool
soit conçu pour gérer les fichiers m4b, presque tous les formats audio doivent être pris en charge, par exemple mp3, aac, ogg, alac et flac.
Si vous utilisez l'un de mes projets et que vous le trouvez utile, pensez à faire un don pour me soutenir. Je prévois d'utiliser l'argent pour soutenir d'autres projets open source ou à des fins caritatives. Merci!
>= 25.00$
Un merci spécial à tous les sponsors qui font un don mensuel de >= 25.00$
.
Nom | Montant |
---|---|
numinité | 25,00$ |
Obtenez Nix et assurez-vous que Flakes est activé.
nix run github:sandreas/m4b-tool
ou nix run github:sandreas/m4b-tool#m4b-tool-libfdk
nix build github:sandreas/m4b-tool
ou nix build github:sandreas/m4b-tool#m4b-tool-libfdk
./result/bin/m4b-tool
nix develop
composer2nix --executable --composition=composer.nix
pour mettre à jour les fichiers .nix J'ai commencé une expérience qui a maintenant atteint un premier niveau alpha et peut être testée. L'outil de ligne de commande est écrit en C#
, entièrement open source et s'appelle tone
. Il dispose déjà d'un ensemble de fonctionnalités assez décent, donc si vous souhaitez l'essayer, le voici :
https://github.com/sandreas/tone
Cette annonce ne signifie PAS que m4b-tool
est obsolète ou le sera bientôt. Le développement de m4b-tool
se poursuivra (au moins jusqu'à ce que Tone dispose d'un ensemble de fonctionnalités similaire à m4b-tool
). Il s'agit simplement d'avoir un outil alternatif pour les fonctionnalités, qui peuvent avoir des limites.
Amusez-vous bien, j'ai hâte d'avoir vos retours.
Malheureusement, je suis assez occupé en ce moment, donc m4b-tool 0.4.2
est très ancien. Puisqu'il n'est pas prévu de publier une version plus récente sans disposer d'une documentation complète, seule la dernière version préliminaire contient des corrections de bogues. Il est déjà assez stable, donc si vous rencontrez des bugs avec v0.4.2
, veuillez essayer la dernière version préliminaire, si elle y a déjà été corrigée.
Merci, Sandreas
https://pilabor.com
merge
un ensemble de fichiers audio (par exemple MP3 ou AAC) en un seul fichier m4bsplit
un seul fichier m4b en plusieurs fichiers de sortie par chapitres ou un album codé en flac
en pistes uniques via une feuille de repèrechapters
pour un fichier m4b existant via la détection de silence ou musicbrainz merge
tous les fichiers audio du répertoire data/my-audio-book
dans le fichier data/merged.m4b
(les balises sont conservées et data/my-audio-book/cover.jpg
et data/my-audio-book/description.txt
sont intégrés , si disponible)
m4b-tool merge "data/my-audio-book/" --output-file="data/merged.m4b"
split
un gros fichier m4b par chapitres en plusieurs fichiers mp3 dans data/my-audio-book_splitted/
(les balises sont conservées, data/my-audio-book_splitted/cover.jpg
est créé, si m4b contient une couverture)
m4b-tool split --audio-format mp3 --audio-bitrate 96k --audio-channels 1 --audio-samplerate 22050 "data/my-audio-book.m4b"
chapters
peuvent essayer d'ajuster les chapitres existants d'un m4b par détection de silence
m4b-tool chapters --adjust-by-silence -o "data/destination-with-adjusted-chapters.m4b" "data/source-with-misplaced-chapters.m4b"
Puisque la sous-commande la plus utilisée de m4b-tool
semble être merge
, parlons des meilleures pratiques...
Malheureusement, m4b-tool
a de nombreuses dépendances. Non seulement les one-liners, si vous souhaitez obtenir la meilleure qualité et la meilleure prise en charge du balisage, de nombreuses dépendances doivent être compilées manuellement avec des options supplémentaires. C'est pourquoi vous devriez jeter un œil à l'image Docker, qui est livrée avec toutes les fonctionnalités d'une qualité audio optimale, d'un support de marquage optimal et d'une installation facile et qui ne présente presque aucun inconvénient.
Remarque : Si vous utilisez Windows, il peut être difficile de le faire fonctionner.
Lorsque vous fusionnez des livres audio, vous devez les préparer. La structure de répertoires suivante est très utile, même si vous ne fusionnez qu'un seul livre audio :
input/<main genre>/<author>/<title>
ou si c'est une série
input/<main genre>/<author>/<series>/<series-part> - <title>
Exemples :
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/
input/Fantasy/J.K. Rowling/Harry Potter/1 - Harry Potter and the Philosopher's Stone/
Remarque : si le titre de votre livre audio contient des caractères de chemin non valides tels que
/
, remplacez-les simplement par un tiret-
.
Maintenant, comme vous souhaitez presque toujours une couverture et une description pour votre livre audio, vous devez ajouter les fichiers suivants dans le répertoire principal :
cover.jpg
(ou cover.jpeg
ou cover.png
)description.txt
(Assurez-vous d'utiliser l'encodage de fichier texte UTF-8
pour le contenu)Exemples :
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/cover.jpg
input/Fantasy/J.K. Rowling/Quidditch Through the Ages/description.txt
Remarque :
m4b-tool
trouvera et intégrera ces fichiers automatiquement mais n'échouera pas s'ils ne sont pas présents
Les chapitres sont utiles pour ajouter des waypoints à votre livre audio. Ils aident à mémoriser la dernière position et à améliorer l'expérience en général.
Si vous souhaitez ajuster les chapitres manuellement, vous pouvez ajouter un chapters.txt
(au même emplacement que cover.jpg
) avec le contenu suivant ( <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
Si vos fichiers d'entrée sont balisés, ces balises seront utilisées pour créer les métadonnées du chapitre par son title
. Donc, si vous marquez vos fichiers d'entrée avec des noms de chapitre valides comme title
de piste, cela se traduira par un fichier m4b
agréable et propre avec des noms de chapitre valides.
Une autre fonctionnalité intéressante depuis m4b-tool
v.0.4.0 est le paramètre --max-chapter-length
. Souvent, les fichiers d'entrée individuels sont trop volumineux, ce qui entraîne des chapitres d'une très longue durée. Cela peut être ennuyeux si vous souhaitez passer à un certain point, car vous devez rembobiner ou avancer rapidement et maintenir le bouton enfoncé pendant un long moment, au lieu de simplement basculer plusieurs fois vers le précédent ou le suivant. Pour ajouter automatiquement des sous-chapitres, vous pouvez fournir :
--max-chapter-length=300,900
Cela entraînera m4b-tool
Les sous-chapitres sont nommés comme l'original et reçoivent un index supplémentaire. C'est une bonne façon de conserver les vrais noms mais de ne pas avoir de chapitres d'une durée trop longue.
Si vous possédez un iPod, les livres audio trop longs pourraient poser un problème, car les iPod ne prennent en charge que des taux d'échantillonnage de 32 bits. Si votre livre audio dure plus de 27 heures avec un taux d'échantillonnage de 22 050 Hz, vous pouvez fournir --adjust-for-ipod
, pour sous-échantillonner automatiquement votre livre audio, ce qui entraîne une qualité inférieure, mais au moins il fonctionne sur votre bon vieux iPod...
m4b-tool
prend en charge plusieurs tâches de conversion en parallèle avec le paramètre --jobs
(par exemple --jobs=2
). Si vous devez convertir plus d'un fichier, ce qui est le cas courant, vous doublez presque la vitesse de fusion en fournissant le paramètre --jobs=2
(ou quadruplez avec --jobs=4
, si vous avez un système quad core, etc. .). Ne fournissez pas un nombre supérieur au nombre de cœurs de votre système - cela ralentirait la fusion...
Remarque : Si vous exécutez la conversion sur tous vos cœurs, cela entraînera une utilisation du processeur à près de 100 %, ce qui peut entraîner un ralentissement des performances du système.
--batch-pattern
Dans m4b-tool v.0.4.0
la fonctionnalité --batch-pattern
a été ajoutée. Il peut être utilisé pour convertir par lots plusieurs livres audio à la fois, mais aussi pour convertir simplement un seul livre audio, car vous pouvez créer des balises à partir d'une structure de répertoires existante.
Astuce : le paramètre
output-file
doit être un répertoire, lors de l'utilisation--batch-pattern
.
Même plusieurs paramètres --batch-pattern
sont pris en charge, tandis que la première correspondance sera utilisée en premier. Donc, si vous avez créé la structure de répertoires comme décrit ci-dessus, la commande finale pour fusionner input/Fantasy/Harry Potter/1 - Harry Potter and the Philosopher's Stone/
vers output/Fantasy/Harry Potter/1 - Harry Potter and the Philosopher's Stone.m4b
ressemblerait à ceci :
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/"
En mode
--batch-pattern
, les fichiers existants sont ignorés par défaut
Si vous avez effectué les étapes ci-dessus avec l'image Docker ou installé et compilé toutes les dépendances, vous devriez obtenir le résultat suivant :
libfdk_aac
genre
, author
, title
, sorttitle
, etc. à partir de l'utilisation --batch-pattern
cover.jpg
(ou cover.jpeg
ou cover.png
) et description.txt
existent dans les répertoires principaux, une cover
, une description
et un longdesc
sont embarqués Pour utiliser Docker avec m4b-tool
, vous devez d'abord
pull
l'image officielle du docker (recommandé)build
le Dockerfile
dans le répertoire principal Les images Docker officielles sont disponibles sur DockerHub. Ils sont quelque peu expérimentaux, mais se sont avérés efficaces. La latest
balise est considérée comme la voie à suivre avec les fonctionnalités et correctifs de pointe. De temps en temps, une balise datée est publiée (par exemple sandreas/m4b-tool:2022-09-25
), qui est considérée comme assez stable, pour garantir qu'une latest
image cassée ne cassera pas l'ensemble de votre configuration.
# 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
Remarque : si vous utilisez l'alias ci-dessus, gardez à l'esprit que vous ne pouvez pas utiliser de chemins absolus (par exemple
/tmp/data/audiobooks/harry potter 1
) ou de liens symboliques. Vous devez accéder au répertoire et utiliser des chemins relatifs (par exemplecd /tmp/data && m4b-tool merge "audiobooks/harry potter 1" --output-file harry.m4b
)
Pour créer manuellement un conteneur Docker pour une version spécifique m4b-tool
, il est nécessaire de fournir un paramètre supplémentaire pour télécharger une version spécifique dans l'image, par exemple pour 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
Remarque : Vous pouvez également simplement modifier la variable correspondante dans le
Dockerfile
.
Les développeurs ou les experts voudront peut-être exécuter une version personnalisée complète de m4b-tool
ou créer le code eux-mêmes (par exemple, si vous avez créé le référentiel et appliqué des correctifs). Si tel est le cas, vous pouvez stocker la version personnalisée dans dist/m4b-tool.phar
par rapport au Dockerfile
, puis effectuer une version par défaut.
# dist/m4b-tool.phar is available
docker build . -t m4b-tool
Après cela, la version personnalisée doit être intégrée à l'image Docker.
Sur MacOS, vous pouvez utiliser le génial gestionnaire de paquets brew
pour installer m4b-tool
.
Obtenir la meilleure qualité audio nécessite des efforts supplémentaires. Vous devez recompiler ffmpeg
avec le codec non libre libfdk_aac
. Cela nécessite de désinstaller le package ffmpeg
par défaut s'il est installé, car brew
a supprimé la possibilité d' options supplémentaires . Il n'y a pas de référentiel officiel ffmpeg-with-options
, mais un tap
assez décent, que vous pouvez utiliser pour gagner du temps.
# 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
Si ce qui précède ne fonctionne pas pour vous ou si vous souhaitez simplement consulter m4b-tool
avant de l'utiliser en production, vous voudrez peut-être essayer la méthode simple et rapide . Cela fonctionnera, mais vous obtiendrez une qualité audio inférieure et le tri n'est pas pris en charge .
# 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
Remarque : Si vous souhaitez obtenir la meilleure qualité audio possible, vous devez compiler
ffmpeg
avec l'encodeur de haute qualitéfdk-aac
(--enable-libfdk_aac
) - voir https://trac.ffmpeg.org/wiki/CompilationGuide/ Ubuntu pour un guide étape par étape pour compilerffmpeg
.
m4b-tool
est écrit en PHP
et utilise ffmpeg
, mp4v2
et éventuellement fdkaac
pour des codecs à haute efficacité permettant d'effectuer des conversions. Par conséquent, vous aurez besoin des outils suivants dans votre %PATH% :
php
>= 7.1 avec l'extension mbstring
activée (https://php.net)ffmpeg
(https://www.ffmpeg.org)mp4v2
( mp4chaps
, mp4art
, etc. https://github.com/sandreas/m4b-tool/releases/download/v0.2/mp4v2-windows.zip)fdkaac
(facultatif, uniquement si vous avez besoin d'une haute efficacité pour des débits faibles <= 32k, http://wlc.io/2015/06/20/fdk-aac/ - attention : non officiel !)Pour vérifier les dépendances, l'exécution des commandes suivantes via la ligne de commande devrait afficher un résultat similaire :
$ 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 [...]
Si vous êtes sûr que toutes les dépendances sont installées, l'étape suivante consiste à télécharger la dernière version de m4b-tool
depuis
https://github.com/sandreas/m4b-tool/releases
Selon le système d'exploitation, vous pouvez renommer m4b-tool.phar
en m4b-tool
et exécuter m4b-tool --version
directement à partir de la ligne de commande. Si vous n'êtes pas sûr, vous pouvez toujours utiliser la commande php m4b-tool.phar --version
pour vérifier si l'installation a réussi. Cela devrait fonctionner sur tous les systèmes.
Si vous souhaitez utiliser le dernier code source avec toutes les nouvelles fonctionnalités et correctifs, vous pouvez également créer à partir des sources. La version actuelle peut être instable et ne doit être utilisée qu'à des fins de test ou si vous avez besoin d'une fonctionnalité spécifique qui n'a pas été publiée.
mp4v2
personnalisé pour un ordre de tri précisLa plupart des livres audio ne sont pas publiés par ordre alphabétique. Un exemple marquant est Harry Potter. Donc, si vous avez tous les livres audio d'Harry Potter, cela dépend de votre lecteur, mais ils ne sont probablement pas répertoriés dans le bon ordre... voyons quel serait l'ordre alphabétique :
Et l'ordre correct aurait été :
Eh bien, il existe une solution pour cela. Vous devez étiqueter le livre audio avec un sortname
et/ou sortalbum
personnalisé. Si votre lecteur prend en charge ces balises, l'ordre est désormais correct, même lorsque le titre est toujours le titre original. Pour y parvenir, j'ai dû créer une version personnalisée de mp4v2
( mp4tags
plus précise), ajouter des options pour ces balises et ajouter les pseudo-balises --series
et --series-part
.
Donc si vous faites ce qui suit :
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"
Il en résulterait :
Harry Potter and the Chamber of Secrets
Harry Potter 2 - Harry Potter and the Chamber of Secrets
mp4v2
personnaliséDans l'image Docker, la version personnalisée est déjà installée
git clone https://github.com/sandreas/mp4v2
cd mp4v2
./configure
make && sudo make install
Dans m4b-tool
toutes les conversions audio sont effectuées avec ffmpeg
ce qui donne une qualité audio assez décente en utilisant ses encodeurs gratuits. Cependant, une qualité optimale demande un effort supplémentaire, donc si vous utilisez les encodeurs gratuits, m4b-tool
peut afficher l'indice suivant :
Votre version ffmpeg ne peut pas produire d'aac de qualité supérieure en utilisant l'encodeur aac au lieu de libfdk_aac
Ce n'est pas vraiment un problème, car la différence entre les encodeurs aac
et libfdk_aac
est à peine perceptible dans la plupart des cas. Mais pour surmonter cette astuce et obtenir la meilleure qualité audio possible, vous devez utiliser un encodeur non libre, qui n'est pas intégré par défaut dans ffmpeg
(raisons de licence). Selon le système d'exploitation que vous utilisez, l'installation de l'encodeur non libre peut nécessiter un peu plus de compétences, d'efforts et de temps (voir les notes relatives à votre système d'exploitation ci-dessus). Vous devez décider si cela vaut la peine de faire un effort supplémentaire pour obtenir une qualité légèrement meilleure. Si vous utilisez l'image Docker, vous devriez obtenir la meilleure qualité par défaut.
Si vous utilisez des débits binaires très faibles (<= 32k), vous pouvez également utiliser des profils à haute efficacité pour améliorer encore la qualité audio (par exemple --audio-profile=aac_he
pour le mono). Malheureusement, l'implémentation très efficace de ffmpeg
produit des fichiers audio incompatibles avec de nombreux lecteurs (y compris iTunes). Pour produire des fichiers très efficaces, compatibles avec au moins la plupart des lecteurs courants, vous devrez pour l'instant installer fdkaac
.
Plus de détails :
Vous pensez qu'il y a un problème avec m4b-tool
? Jetez d’abord un œil aux problèmes connus ci-dessous. Si cela ne résout pas le problème, veuillez fournir les informations suivantes lors de l'ajout d'un problème :
m4b-tool merge my-audio-book/ --output-file merged.m4b
the resulting file merged.m4b is only 5kb
Exemple:
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
Si vous obtenez des exceptions PHP, il s'agit dans la plupart des cas d'un problème de configuration avec PHP. Si vous n'êtes pas familier avec la configuration PHP, vous pouvez suivre ces instructions pour résoudre quelques problèmes connus :
[Exception]
charset windows-1252 is not supported - use one of these instead: utf-8
Cela se produit principalement sous Windows, car l' mbstring
-Extension est utilisée pour convertir en interne les jeux de caractères, de sorte que les caractères spéciaux comme les trémas allemands soient pris en charge sur chaque plate-forme. Pour résoudre ce problème, vous devez activer l'extension mbstring :
Exécutez php --ini
sur la ligne de commande :
C:>php --ini
...
Loaded Configuration File: C:Program Filesphpphp.ini
Ouvrez le fichier de configuration (par exemple C:Program Filesphpphp.ini
) dans un éditeur de texte et recherchez extension=
. Sous Windows, il devrait y avoir un élément comme celui-ci :
;extension=php_mbstring.dll
supprimez le ;
pour activer l'extension :
extension=php_mbstring.dll
Maintenant, tout devrait fonctionner comme prévu.
La liste suivante contient toutes les commandes possibles, y compris merge
, split
et chapters
accompagnées de la référence des paramètres disponibles dans chaque commande.
Avec m4b-tool
vous pouvez fusionner un ensemble de fichiers audio en un seul fichier de livre audio m4b.
m4b-tool merge "data/my-audio-book" --output-file="data/my-audio-book.m4b"
Cela fusionne tous les fichiers audio du dossier data/my-audio-book
dans my-audio-book.m4b
, en utilisant la balise-titre de chaque fichier pour générer des chapitres.
S'il existe un fichier data/my-audio-book/cover.jpg
(ou cover.jpeg
ou cover.png
), il sera utilisé comme couverture pour le fichier m4b résultant.
Remarque : Si vous utilisez des fichiers audio non balisés, vous pouvez fournir un identifiant musicbrainz pour obtenir les noms de chapitre corrects, voir le chapitre sur les commandes pour plus d'informations.
Pour toutes les options, voir 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
Si vous utilisez le paramètre --batch-pattern
, les espaces réservés suivants sont pris en charge
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
peut être utilisé pour diviser un seul m4b
en un fichier par chapitre ou un album codé en flac
en pistes uniques via une feuille de repère.
m4b-tool split --audio-format mp3 --audio-bitrate 96k --audio-channels 1 --audio-samplerate 22050 "data/my-audio-book.m4b"
Cela divise le fichier data/my-audio-book.m4b into
un fichier mp3 pour chaque chapitre, en écrivant les fichiers dans data/my-audio-book_splitted/
.
Si vous souhaitez diviser un fichier flac
contenant plusieurs pistes, une feuille de repère avec le nom de fichier exact du flac
est requise ( my-album.flac
nécessite 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"
Pour toutes les options, voir 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]