Arquivo de dezembro 2008

Apesar de utilizar o Symbian OggPlay para tocar arquivos OGG e FLAC no meu N95, a não-utilização do player de música padrão da Nokia me impedia de usufruir de certas funcionalidades, como o scrobbling para o Last.fm (com o Mobbler), o AVRCP (controle das faixas com o fone bluetooth), integração com o Nokia Sports Tracker etc. Assim, resolvi converter minhas músicas em FLAC para AAC.

Por que AAC?
Ao contrário do MP3, o modelo de licenciamento do formato AAC é menos pior, permitindo a distribuição de músicas no formato, embora ainda haja a necessiade de (quebra de) patentes para binários dos codecs (codificadores e decodificadores). Além disso, a compressão é melhor que a do MP3, permitindo arquivos menores com qualidade semelhante.

Na verdade, o AAC foi criado para ser o sucessor do MP3. Todos os tocadores de música decentes o suportam, como iPods, a grande maioria dos celulares, videogames, dentre outros, tirando os players chineses MPn. Além disso, ele é o formato utilizado no ISDB-T(b), de forma que provavelmente esses arquivos tocarão (ou poderiam tocar…) nos decoders de TV digital.

Para criar e tocar arquivos AAC no Linux, existe a dupla FAAC e  FAAD2 (Free Advanced Audio Coder / Decoder). Para utilizá-los no Ubuntu, basta instalar os pacotes flac, faac e ubuntu-restricted-extras.

Os arquivos AAC possuem a extensão .aac, mas geralmente são encapsulados pelo container MPEG4 (para poder conter metadados), possuindo a extensão .mp4 ou .m4a.

Script flac2mp4
Assim sendo, criei um script para converter minhas músicas FLAC para MP4. Sua utilização é: flac2mp4 arquivo.flac capa.jpg A imagem é opcional. Segue o código do script:

#!/bin/sh

echo ""
echo "flac2mp4 - script de conversão de áudio FLAC para MP4 (AAC)"
echo "Por Arlindo \"Nighto\" Pereira"
echo ""

if [ "$2" ]
then
	flac --totally-silent -d -c "$1" | faac - -o "$(pwd)/$(basename "$1" .flac).m4a" \
	--title "$(metaflac --show-tag=TITLE "$1" | sed 's/TITLE=//g')" \
	--artist "$(metaflac --show-tag=ARTIST "$1" | sed 's/ARTIST=//g')" \
	--album "$(metaflac --show-tag=ALBUM "$1" | sed 's/ALBUM=//g')" \
	--year "$(metaflac --show-tag=DATE "$1" | sed 's/DATE=//g')" \
	--track "$(metaflac --show-tag=TRACKNUMBER "$1" | sed 's/TRACKNUMBER=//g')" \
	--genre "$(metaflac --show-tag=GENRE "$1" | sed 's/GENRE=//g')" \
	--cover-art "$2"
elif [ "$1" ]
then
	flac --totally-silent -d -c "$1" | faac - -o "$(pwd)/$(basename "$1" .flac).m4a" \
	--title "$(metaflac --show-tag=TITLE "$1" | sed 's/TITLE=//g')" \
	--artist "$(metaflac --show-tag=ARTIST "$1" | sed 's/ARTIST=//g')" \
	--album "$(metaflac --show-tag=ALBUM "$1" | sed 's/ALBUM=//g')" \
	--year "$(metaflac --show-tag=DATE "$1" | sed 's/DATE=//g')" \
	--track "$(metaflac --show-tag=TRACKNUMBER "$1" | sed 's/TRACKNUMBER=//g')" \
	--genre "$(metaflac --show-tag=GENRE "$1" | sed 's/GENRE=//g')"
else
	echo "Entre com o nome do arquivo para converter:"
	echo "flac2mp4 arquivo.flac [capa-do-disco]"
	echo ""
exit 1
fi

Para utilizar o script, salve-o com o nome de flac2mp4 e, num terminal, digite: chmod +x flac2mp4 && sudo mv flac2mp4 /usr/local/bin. Para converter todas as músicas de um disco (todos os arquivos de um diretório), pode utilizar da seguinte forma:

for i in *.flac ; do flac2mp4 "$i" capa.jpg ; done

Fontes:

Edit: troquei a extensão do arquivo gerado de mp4 para m4a para ficar semelhante ao arquivo gerado pelo iTunes ao ripar CDs e adicionei os pacotes flac e faac na lista de pacotes para utilizar o script no Ubuntu. (Em 28/02/2010)

Edit: adicionei uma subrotina de verificação para utilização sem imagem de capa de disco. (Em 01/03/2010)

Tags:, , , , , , , ,

Comments 2 comentários »