31 de ago de 2009

Extraindo áudio MP3 de DVD


Imagine você escutando seus shows em DVD no MP3 player. Com algumas ferramentas open source é possível extrair faixas de áudio do DVD e convertê-las para MP3. Escrevi um script para facilitar esse processo. Para rodá-lo você precisa do transcode, lsdvd, lame e mp3gain.
No caso de distribuições baseadas no Debian, instale-os com:
sudo apt-get install -y transcode lsdvd lame mp3gain

Abra um editor de texto e cole o conteúdo do script abaixo:

#!/bin/bash
# Shell script para extrair MP3 (320 Kbps) de DVD com ajuste automático de nível (92 dB)
# Autor: Alexsander Loula - 31/08/2009
# Versão 0.1
SEPARADOR=_
EXTENSAO=.mp3
echo "=========>"
/usr/bin/lsdvd
echo "=========>"
echo "Prefixo Arquivo MP3:"
read PREFIXO
echo "Título Principal do DVD:"
read PRINCIPAL
echo "Trilha de Áudio:"
read TRILHA
echo "Quantidade de capítulos :"
read CAPITULOS
for (( i = 1; i <= $CAPITULOS; i++ ))
do
     echo "=========>"
     echo "Extraindo capítulo: $i de $CAPITULOS..."
     echo "=========>"
     ARQUIVO=$PREFIXO$SEPARADOR$i$EXTENSAO
     # Extrai o áudio do DVD e converte para MP3 em 320 Kbps
     /usr/bin/transcode -i /media/cdrom0 -x dvd -T $PRINCIPAL,$i,1 -b 320,0,5,0 -a $TRILHA -y raw -m $ARQUIVO
     # Ajusta nível do MP3 para 92 dB
     /usr/bin/mp3gain -r -c -q -k -d 3.0 $ARQUIVO
done
echo "=========>"
echo "Pronto!!!"


Salve o arquivo como "dvd2mp3". Torne-o executável:
sudo chmod +x dvd2mp3

Coloque um DVD (ex: Rainbow - Live in Munich 1977) e execute o script:
./dvd2mp3
=========>
libdvdread: Using libdvdcss version 1.2.10 for DVD access
Disc Title: RAINBOW
Title: 01, Length: 01:53:00.043 Chapters: 11, Cells: 12, Audio streams: 03, Subpictures: 03
Title: 02, Length: 00:05:12.200 Chapters: 02, Cells: 02, Audio streams: 01, Subpictures: 03
...
Longest track: 01
=========>
Prefixo Arquivo MP3:
Rainbow -> Digite o prefixo do arquivo
Título Principal do DVD:
01 -> Digite o título principal do DVD (Vide acima: Longest track)
Trilha de Áudio:
01 -> Digite a trilha de áudio (Vide acima: Audio streams)
Quantidade de capítulos :
11 -> Digite a quantidade de capítulos (Vide acima: Chapters)

No exemplo acima serão gerados os arquivos Rainbow_1.mp3, Rainbow_2.mp3, ...
O script gera arquivos MP3 de 320 Kbps. Para alterar, mude o parâmetro "-b" do transcode. O script também normaliza o ganho de aúdio dos arquivos para 92 dB. Para mudar esse nível, veja o post sobre o mp3gain.