Il est possible d'extraire la bande son d'un DVD, par piste ou par chapitre, en utilisant la ligne de commande.
Si vous n'êtes pas à l'aise avec la ligne de commande, orientez-vous vers le logiciel xcfa qui propose les mêmes fonctionnalités, mais via une interface graphique.
Afin d'identifier la piste audio à extraire, insérez le DVD dans votre lecteur puis, dans la console, tapez la commande lsdvd :
lsdvd
Le résultat de la commande est alors :
libdvdread: Using libdvdcss version 1.2.10 for DVD access Disc Title: NOM_DU_DVD Title: 01, Length: 00:00:13.100 Chapters: 01, Cells: 01, Audio streams: 08, Subpictures: 32 Title: 02, Length: 01:15:46.084 Chapters: 18, Cells: 18, Audio streams: 01, Subpictures: 00 Longest track: 02
Les informations délivrées sont les suivantes :
Le logiciel transcode est capable d'extraire les pistes du DVD et de les transcoder en fichiers audio. Il dispose à cet effet de nombreuses options, sa syntaxe est donc relativement complexe.
Voici la commande à utiliser pour extraire la troisième piste du second chapitre au format mp3 :
transcode -i /media/NOM_DU_DVD/ -x dvd,dvd -T2,3 -a 0 -y null,tcaud -m /home/omnisilver/Musique/DVD/Live3.mp3
Les arguments ont le rôle suivant :
Syntaxe de 1 commande pour plusieurs pistes à la fois: Pour extraire les 18 pistes du titre 2, en 18 fichiers (par exemple de format libre .ogg), en une seule ligne de commande:
for i in {1..18};do transcode -x null,dvd -y null,tcaud -i /dev/sr0 -T 2,$i,1 -a 0 -E 44100,16,2 --lame_preset medium -m /home/BIBI/Musique/CONCERT/piste${i}.ogg; done
où les arguments utilisés sont:
Le chemin /home/… est à adapter à votre propre chemin.
A vous de modifier les paramètres de ces arguments pour obtenir le résultat que vous désirez (fichier ogg, etc.).
Pour les types de fichiers non gérés nativement par transcode, il est possible d'extraire au format WAV (sans perte) et de réencoder dans une deuxième étape, par exemple à l'aide de l'utilitaire en ligne flac (FLAC est un format de compression audio présentant l'avantage d'être sans pertes), lancé dans le répertoire contenant les fichiers wav.
Ce qui donne ici, à considérer que lsdvd -a a permis d'identifier le titre TITRE, angle ANG (en général:1), audio AUD (choisir, autant que possible, la piste stéréo, idéalement LPCM si elle existe), comptant CHAP chapitres (remplacer par les vraies valeurs dans la ligne de commande)… comme celui dont on veut extraire l'audio en wav (fichiers XXX_01.wav…) avant de les convertir en flac:
for((x=1; x<=CHAP; x++)) do transcode -i /dev/dvd -x dvd -T TITRE,$x,ANG -a AUD -y wav -m XXX_$x.wav;done flac --best *.wav
Ceci donnera en sortie les mêmes fichiers compressés sans perte, extension .flac, avec le meilleur ratio de compression (–best).
A noter que l'extraction de pistes audio de DVD video (concerts…) va généralement donner des fichiers musicaux 16bits (jusque là, OK!) mais échantillonnés à 48kHz. Ceci pose problème à pas mal de baladeurs qui n'acceptent en général pas des fréquences d'échantillonnage supérieures à celle du CD audio (44.1kHz)!
Il va donc falloir dans ce cas passer par une étape intermédiaire de ré-échantillonnage, qui est assez problématique avec le ratio "tordu" 48/44.1 (entre 96kHz, utilisé pour les master audio et les 48kHz classiques sur DVD, le facteur entier 2 serait par exemple bien plus facile à gérer). Tous les utilitaires permettant cette opération ne sont hélas pas tous égaux, en particulier pour ces deux fréquences.
Le meilleur existant (en 2011) dans le monde libre n'est en plus hélas pas packagé sous Ubuntu. Il s'agit de ssrc, disponible sur le site de son auteur: http://shibatch.sourceforge.net/
Il est néanmoins aisé de le compiler soit-même (si on a installé le paquet "build-essentials", voir l'aide correspondante): - Le downloader:
wget http://shibatch.sourceforge.net/download/ssrc-1.30.tgz
- L'extraire/compiler:
tar -xjf ssrc-1.30.tgz cd ssrc-1.30 make all sudo mv ssrc /usr/local/bin
Il faudra dans ce cas ajouter l'appel à ssrc entre l'extraction au format wav et la conversion au format flac:
ssrc --rate 44100 fichier_original_48k.wav fichier_44_1k.wav
Le mieux étant bien entendu de scripter l'affaire, ssrc n'acceptant qu'un fichier unique en entrée (pas de wildcard…): Pas très convivial, mais c'est le prix à payer pour avoir le meilleur down-sampling libre existant.
Par exemple, si on a extrait une suite de fichiers XXX.wav dans un répertoire avec transcode, le script suivant (fichier à sauver sous ssrc44k par exemple et à rendre exécutable: chmod +r ssrc44k) placé sous son home appelé dans ce répertoire d'extraction (~/ssrc44k) va downsampler en XXX_44k.wav les fichiers d'origine, les renommer avec le nom d'origine (attention, ceux en 48kHz seront perdus, travailler au besoin sur une copie ou modifier le script) et en faire des flac, avant de supprimer les wav qui ne servent plus à rien, flac étant sans perte donc parfait pour l'archivage (et reconversion sur demande):
#!/bin/bash #flac -d *.flac # Set this line if we have to decode flac to wav before downsample FILES=*.wav for f in $FILES do echo "Processing $f file..." # take action on each file. $f store current file name ssrc --rate 44100 "$f" "44k_$f" mv -f "44k_$f" "$f" # Set to overwrite 48kHz original files, unset to encode both... done flac -f --best --verify *.wav \rm -rf 44k_*.wav # Set this to autoremove intermediate 44k wav files
Seul bémol: ssrc ne semble pas aimer les échantillons "drc" que l'on retrouve parfois (lsdvd -a l'indique au chapitre "quantization", en lieu et place des habituels "16 bits"): Il lui faut des échantillons 8/16/24 bits.
Contributeurs principaux : Omnisilver.
Basé sur How to Rip DVD audio to mp3 or ogg.