Usando o LPD para gerenciar e ouvir MP3
Publicado em 11 de junho de 2003
O texto abaixo é uma tradução de um artigo original em Inglês de autoria do Patrick Wagstrom. O Leonardo S.R. (cefet_tuc@yahoo.com.br) obteve a permissão para traduzir o texto para o nosso idioma, e enviou para publicação aqui no Linux in Brazil. Trata-se de um tutorial sobre como adaptar o gerenciador de impressão LPD para enfileirar e ouvir MP3. Por mais que a utilidade prática possa ser questionada, no mínimo trata-se de uma maneira interessante de conhecer melhor o funcionamento do LPD.
LPD para divertir e ouvir MP3
mp3 :\
:lp=/dev/null :\
:sd=/var/spool/lpd/audio :\
:if=/usr/local/bin/audiofilter :\
:af=/var/log/audio-acct :\
:lf=/var/log/audio-errs :\
:sh
Agora nós o examinaremos linha por linha. Eu ignorarei a "\" no término de quase todas linha, ela apenas informa o lpd para continuar recebendo pois há mais coisas por vir. A última linha não precisa da "\" obviamente.
2: :lp=/dev/null: - nós não estamos associando isto a um dispositivo físico exatamente 3: :if=/usr/local/bin/audiofilter: - este é o filtro de entrada. Eu mostrarei como criá-lo depois. 4: :af=/var/log/audio-acct: - este é o arquivo de contabilidade. Você pode fazer alguma coisas legais com ele, como monitorar quem mais usa o fila de tarefas(queue) e quem não usa. 5: :lf=/var/log/audio-errs: - este é o arquivo onde serão registrados os erros. Bem, alguns erros; nem todos os erros acabarão aqui. 6: :sh - use isto para suprimir qualquer informação de cabeçalho que normalmente seria enviada. Isto é importante ou você pode conseguir lixo antes de cada arquivo o que pode causar falhas no filtro de áudio. A chave para o sistema inteiro é que todo o processo é feito pelo filtro de entrada. Em algumas plataformas pode ocorrer um erro avisando que a impressão parou enquanto uma musica está tocando, mas isso não é grande coisa. Não há nenhuma saída do filtro de entrada, e assim nada tem que ser feito depois. Você poderá colocar o código em algum lugar como /usr/local/bin/audiofilter:
#!/bin/bash
#
# This script was originally made by Teddy Hogeborn.
# Small alterations was made by:
# Peter Lundqvist
# Patrick Wagstrom
#
# This is a "printer filter" for playing audio files
# Este é o "filtro de impressão" para tocar arquivos de musica
for arg in "$@"; do
case "$arg" in
-d*) dir="${arg#-d}" ;;
-e*) basefile="${arg#-e}" ;;
-f*.*) ext="${arg##*.}" ;;
esac
done
#NT: Mude as 3 linhas abaixo caso queira usar outros reprodutores.
mp3player="mpg123 -q -o oss";
modplayer="mikmod --quiet --playmode 0 --noloops --norc"
oggplayer="ogg123 --device=oss --quiet"
file="${dir}/${basefile}"
type="$(file "${file}"| sed -e 's/^[^:]*: *//')"
case "$type" in
MP3*)
$mp3player -
;;
Ogg*Vorbis*)
$oggplayer -
;;
RIFF*\ WAVE\ audio*)
/usr/bin/play --type=wav --silent /dev/stdin
;;
*Extended\ Module\ sound\ data*|*Protracker\ module\ sound\ data*)
$modplayer $file
;;
data|*audio*)
if ogginfo "$file" 2>/dev/null | grep --quiet -e '^header_integrity=pass' >/dev/null; then
$oggplayer -
elif mp3info -x "$file" 2>/dev/null| grep --quiet -e '^File:' > /dev/null; then
$mp3player -
else
play --type=auto --silent "$file" || play --type="$ext" --silent "$file"
fi
;;
*) echo "$type" >&2 ;;
esac
Uma explicação básica do que o sistema faz. O inicio do código analisa gramaticalmente os argumentos que são passados ao filtro de impressão da impressora. Os armazena então em um par de variáveis. Tem algumas declarações sobre onde você pode encontrar seu reprodutor mp3, ogg, e mod. Você está percebendo, que este sistema é extensível com pequena dificuldade.
Depois o formato do arquivo é obtido executando o programa 'file' nele. Esta pequena bela ferramenta, negligenciada pela maioria das pessoas, examinará o arquivo, e normalmente proverá com satisfatória qualidade que tipo de arquivo ele é. É ótimo para identificar arquivos com extensões incorretas. Finalmente, o tipo do arquivo é passado para um 'case' e então o reprodutor apropriado é chamado. Em todos os casos, o fluxo de entrada é abastecido pela entrada padrão. As aplicações deveriam ser silenciosas, o lpd normalmente assume que se há qualquer saída do filtro é que algo deu errado. Você pode precisar modificar este script. A razão principal é que algumas versões do 'file' não retornam a mesma informação do mesmo jeito. Alguns informam "MPEG 2 layer 3 audio" para um arquivo de MP3, enquanto o meu informa "MP3, 128 kBits, 44.1 kHz, Stereo" ou algo parecido. Assim, você pode precisar modificar os valores do 'case' para que o sistema funcione corretamente. Acessando a Placa de Som Até este ponto nós não fizemos nada que pudesse ser considerado um grande risco de segurança. Este ponto é secundário, mas você precisa permitir que sua impressora acesse sua placa som só assim a musica será tocada. Isto é feito dando permissão para escrever no /dev/audio e no /dev/dsp. Se você está com receio de fazer um simples chmod a+rw /dev/audio /dev/dsp, pois isso permite a todos fazerem o que quiserem com sua placa de som. Será melhor que você coloque todos que deverão ter esta permissão em um grupo, e ponha a conta lp neste grupo também. Por exemplo, criando um grupo chamado snduser com todas as contas que têm acesso à placa de som, e também a conta lp. Faça um chgrp snduser /dev/audio /dev/dsp e chmod g+rw /dev/audio /dev/dsp, isto deve dar um po uco mais de segurança para você. Quando você estiver criando arquivos, você precisará criar esses dois arquivos de contabilidade que eu mencionei na entrada do /etc/printcap. Você pode fazer isto executando os comandos a seguir: touch /var/log/audio-acct touch /var/log/audio-errs chown lp /var/log/audio-acct chown lp /var/log/audio-errsDesfrutando A Música O passo final é desfrutar a música. Considerando que você fez tudo certo, agora pode executar lpr -Pmp3 [seu arquivo de música] e logo depois deve começar a sair musica das suas caixas de som. Um das coisas realmente agradáveis disto é que você pode usar lpq para ver que canções estão na fila e lprm remover uma canção da fila. Aqui está exemplo (sim, eu possuo os álbuns): [/u2/mp3] [patrick@dreams] lpr -Pmp3 Wally\ Pleasant\ -\ Alternateen.mp3 [/u2/mp3] [patrick@dreams] lpr -Pmp3 Wally\ Pleasant\ -\ Bigger\ Than\ Elvis\ -\ Wally\ World.mp3 [/u2/mp3] [patrick@dreams] lpr -Pmp3 Wally\ Pleasant\ -\ In\ Love\ with\ a\ Geek.mp3 [/u2/mp3] [patrick@dreams] lpr -Pmp3 Wally\ Pleasant\ -\ It\'s\ a\ Beautiful\ Day.mp3 [/u2/mp3] [patrick@dreams] lpq -Pmp3 Printer: mp3@dreams Queue: 4 printable jobs Server: pid 7043 active Unspooler: pid 7044 active Status: waiting for subserver to exit at 16:22:55.342 Rank Owner/ID Class Job Files Size Time active patrick@dreams+42 A 42 Wally Pleasant - A 2727348 16:22:38 2 patrick@dreams+50 A 50 Wally Pleasant - B 2679246 16:22:42 3 patrick@dreams+52 A 52 Wally Pleasant - I 3266864 16:22:49 4 patrick@dreams+54 A 54 Wally Pleasant - I 3469897 16:22:55Não está funcionando! Ao contrário do que você pode estar pensando, o primeiro passo se não estiver funcionando não é me enviar um e-mail sobre a configuração do seu sistema. Eu provavelmente não serei muita útil. O primeiro passo é entrar no diretório da fila de impressão, neste caso /var/spool/lpd/audio e ver o que existe nele. O arquivo que você vai querer ver é o status.pr. Este indica o estado de sua impressora. Se houve qualquer saída do script, será salvo nele. Dê uma olhada e use para uma depuração. Questões/Idéias de Melhora Se você tem alguma pergunta sobre este artigo e acha que é algo que deveria ser melhor explicado, me avise. Se você tiver alguma idéia para uma melhora, eu também gostaria de ouvi-la. Eu estou sempre procurando novos 'hacks' interessantes para tentar e experimentar. Traduzido por Leonardo S.R. (cefet_tuc@yahoo.com.br)
Postado por brain em junho 11, 2003 10:03 AM
Comentários para "Usando o LPD para gerenciar e ouvir MP3"
» Postado por: Thiago em junho 27, 2003 10:13 PM, 200.221.108:
» Postado por: c7g em julho 14, 2003 07:06 PM, 200.222.97.:
» Postado por: sou analfabeto mas preciso de informações em outubro 28, 2003 03:32 PM, 200.103.245:
» Postado por: Luiz Felipe em dezembro 10, 2003 04:35 PM, 200.138.63.:
» Postado por: Leonardo S.R. em abril 24, 2004 07:13 PM, 200.242.199:
» Postado por: Fernando Medina em maio 9, 2004 09:09 AM, 200.151.109:
» Postado por: Zithromax Online em setembro 23, 2004 01:51 PM, 65.75.139.9:
» Postado por: Hélio em outubro 15, 2004 12:44 PM, 200.168.110:
Antes de comentar...
- Preserve a qualidade desta discussão - Leia os Termos de Uso. - Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum. - Mantenha o foco nos argumentos e no assunto - Não faça ataques pessoais. - Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro - Não seja um e-mala ;-) ![]() Envie seu comentário
|