---
title: Les audiobooks
author: Frederic AOUSTIN
version: 1.O
---

# Les Audiobook

![category](application)

Grand amateur de lecture je prends plaisir à lire des **epubs** sur des liseuses.
J'utilise kobo ou autres vendeurs pour mes achats.

Mais je prends de plus en plus plaisir à écouter des livres lus par de grand lecteur.

Pour cela je consomme des audiobooks qui ont un format spécifique **m4b** 

Il est tout a fait possible de créer soit même des audiobooks. Si vous avez une liste de fichier **mp3** ou **m4a** il est possible de les rassembler pour en faire un **m4b**

Un petit programme **m4b.sh** qui permet de réaliser cela

```bash
#!/usr/bin/env bash
# Fusionne tous les .m4a du dossier courant en un livre audio .m4b avec chapitres.
# Usage : ./m4b.sh "Titre du livre" "Auteur" [couverture.jpg]
# Prérequis : ffmpeg (sudo apt install ffmpeg)

set -euo pipefail

TITLE="${1:?Indique un titre}"
AUTHOR="${2:?Indique un auteur}"
COVER="${3:-}"
OUT="${TITLE}.m4b"

# Fichiers triés dans l'ordre naturel (2 avant 10)
mapfile -t FILES < <(ls -v -- *.m4a)
[ ${#FILES[@]} -gt 0 ] || { echo "Aucun fichier .m4a ici."; exit 1; }

LIST=$(mktemp); META=$(mktemp)
trap 'rm -f "$LIST" "$META"' EXIT

{
  echo ";FFMETADATA1"
  echo "title=$TITLE"
  echo "album=$TITLE"
  echo "artist=$AUTHOR"
  echo "album_artist=$AUTHOR"
  echo "genre=Audiobook"
} > "$META"

start=0
n=1
for f in "${FILES[@]}"; do
  # Liste pour ffmpeg (apostrophes échappées)
  esc=${f//\'/\'\\\'\'}
  echo "file '$PWD/$esc'" >> "$LIST"

  # Durée en millisecondes
  dur=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$f")
  ms=$(awk -v d="$dur" 'BEGIN { printf "%d", d * 1000 }')
  end=$((start + ms))

  {
    echo "[CHAPTER]"
    echo "TIMEBASE=1/1000"
    echo "START=$start"
    echo "END=$end"
    echo "title=Chapitre $n"
  } >> "$META"

  start=$end
  n=$((n + 1))
done

if [ -n "$COVER" ]; then
  ffmpeg -hide_banner -f concat -safe 0 -i "$LIST" -i "$META" -i "$COVER" \
    -map 0:a -map 2:v -map_metadata 1 -map_chapters 1 \
    -c copy -disposition:v attached_pic -f mp4 "$OUT"
else
  ffmpeg -hide_banner -f concat -safe 0 -i "$LIST" -i "$META" \
    -map 0:a -map_metadata 1 -map_chapters 1 \
    -c copy -f mp4 "$OUT"
fi

echo "Terminé : $OUT ($((n - 1)) chapitres)"

```

Pour l'utiliser rien de plus simple

```bash
sudo apt install ffmpeg
chmod +x m4b.sh
cd /chemin/vers/le/livre
/chemin/vers/m4b.sh "Le Comte de Monte-Cristo" "Alexandre Dumas" couverture.jpg
```

Vous pouvez par la suite conserver votre livre audio sur votre plateforme **calibre-web** par exemple
