tracks

Mettre des chapitres sur de l'audio ou de la vidéo - retour accueil

git clone git://bebou.netlib.re/tracks
Log | Files | Refs | README |

commit a3eb220b69956d1275cb51e76dd144959ecf76a1
Auteurice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Thu, 16 Jan 2025 23:29:14 +0100

Premier commit

Diffstat:
A.gitignore | 3+++
AREADME | 46++++++++++++++++++++++++++++++++++++++++++++++
Amakefile | 13+++++++++++++
Amixes/test.mp3 | 0
Amixes/test.mp3.txt | 3+++
Atracks.sh | 28++++++++++++++++++++++++++++
6 files changed, 93 insertions(+), 0 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -0,0 +1,3 @@ +.*.sw? +tracks +res diff --git a/README b/README @@ -0,0 +1,46 @@ +# tracks + +Un tout petit script pour mettre des "chapitres" sur un fichier audio ou vidéo. +Typiquement utilisé pour chapitrer une vidéo youtube ou mettre une tracklist +sur un long mix + +## Dépendances + +Dépend du (lourd) ffmpeg. id3v2 est beaucoup plus léger mais ne semble pas +savoir mettre des métadonnées chapitrées, du moins pas la version packagée dans +debian. + +## Usage + +### A la main + +Pour un usage "manuel" de `tracks` faire : + + make + +puis consulter l'aide + + ./tracks -h + +Pour installer tracks faire + + make install + +### Une fournée en entier + +Pour un usage en mode "batch", mettre les fichiers audio/vidéo dans le dossier +`mixes`, préparer les fichiers texte en les nommant du fichier audio/vidéo +correspondant + `.txt` et faire : + + make + +Les résultats seront dans `res`. + +## Format des fichiers texte + + t1<tab>titre 1 + t2<tab>titre 2 + ... + +où <tab> est une tabulation, t1 et t2 des temps en secondes depuis le +début du fichier audio diff --git a/makefile b/makefile @@ -0,0 +1,13 @@ +PREFIX=/usr/local + +mixes != find mixes -type f -not -name '.*' | grep -v "\.txt$$" +res = ${mixes:mixes/%=res/%} + +all: tracks ${res} + +install: tracks + cp tracks ${PREFIX}/bin + +res/%: mixes/% mixes/%.txt + @mkdir -p $(shell dirname $@) + ./tracks $< $(word 2,$^) $@ diff --git a/mixes/test.mp3 b/mixes/test.mp3 Binary files differ. diff --git a/mixes/test.mp3.txt b/mixes/test.mp3.txt @@ -0,0 +1,3 @@ +0 chanson 1 +4 chanson 2 +8 chanson 3 diff --git a/tracks.sh b/tracks.sh @@ -0,0 +1,28 @@ +#! /bin/sh + +if [ "$1" = "-h" ];then + <<-. cat + USAGE : tracks chanson tracklist resultat + + - chanson un fichier audio sur lequel on peut mettre des chapitres (mp3 par ex) + - tracklist un fichier texte au format + + t1<tab>titre 1 + t2<tab>titre 2 + + où <tab> est une tabulation, t1 et t2 des temps en secondes depuis le + début du fichier audio + - resultat le chemin vers le fichier audio avec les métadonnées. Doit + être différent de chanson + . + exit 0 +fi + +tmp=$(mktemp) +< "$2" sed -E '2,$ p' | +awk -F '\t' 'BEGIN{ print ";FFMETADATA1\n" } +{ start=$1;title=$2;getline +printf("[CHAPTER]\nTIMEBASE=1/1\nSTART=%s\nEND=%s\ntitle=%s\n\n",start,$1,title) }' > "$tmp" + +ffmpeg -hide_banner -i "$1" -i "$tmp" -map 0 -map_metadata 1 -c copy "$3" +