reproduzir arquivo mp3 ou wav via linha de comando do Linux

79

Gostaria de criar um sistema de alarme apoiado por uma caixa Ubuntu (sem interface gráfica), que reproduz várias faixas de áudio de anúncio e alarme (.mp3 ou .wav) através da linha de comando.

Por exemplo:

$ root> audioplay ./hello.wav

O áudio deve vir da tomada de áudio do PC. Também posso envolvê-lo com outro ouvinte de soquete. (por exemplo, Ruby Sinatra)

Alguma idéia de como posso fazer isso?

c2h2
fonte
11
Caso você esteja procurando por arquivos de exemplo: /usr/share/soundsé um bom lugar para procurá-los.
Martin Thoma

Respostas:

48

mpg123 é um utilitário de linha de comando que reproduz arquivos mp3. Você pode instalá-lo no Ubuntu com:

sudo apt-get install mpg123
pavium
fonte
7
Isso não reproduz arquivos wav.
Cerin
71

O playcomando do soxpacote reproduzirá qualquer formato de arquivo suportado soxusando o dispositivo de áudio padrão, por exemplo

$ play something.mp3
$ play something.wav

Pode ser necessário instalar pacotes extras para obter suporte para todos os formatos; por exemplo, no Ubuntu 11.04, o suporte a MP3 não estará disponível até a instalação libsox-fmt-mp3.


fonte
11
também suporta arquivos ogg (e provavelmente outros).
Lepe
11
No Ubuntu Xenial, há um libsox-fmt-allpacote para instalar todos os formatos.
Eugene Gr. Philippov
60

A maneira mais padrão de reproduzir um arquivo WAV no Linux é usar o aplaycomando, que faz parte do ALSAsistema.

aplay [flags] [filename [filename]] ...

aplay a.wav

Links: (Wikipedia) (página de manual do aplay)

(Tanto no Fedora quanto no Ubuntu / Mint, faz parte do alsa-utilspacote)

Isso não requer nenhum pacote adicional para a instalação do Linux, como sox ou mplayer ou vlc, apenas o ALSA básico que faz parte de qualquer sistema atualmente.

Máxima
fonte
5
Obrigado pela dica! Eu adicionei este alias à minha configuração do shell: alias beep = "aplay --quiet /usr/share/sounds/pop.wav". Dessa forma, recebo uma notificação quando os comandos de execução longa terminam. Por exemplo: compilar && run && beep
Jesse Hallett
11
Sim Jesse! Eu faço exatamente o mesmo com a compilação (conversões longas de arquivos, etc.). Eu uso sons a partir daqui: "Opilki sons" (eles estão sob a licença Creatve Commons) me perdoe este anúncio menor, eu não estou relacionado ao projeto de qualquer maneira :)
Maxim
Morto fácil e já instalado em todos os lugares. +1
Pitto 26/07/2013
4
Lembre-se de que você não pode tocar um MP3 aplay. Você apenas ficará estático.
Starbeamrainbowlabs
@starbeamrainbowlabs, escrevi apenas sobre arquivos WAV!
Maxim
22

Instale vlcusando:

sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc

Certifique-se de ter todos os repositórios abertos. Execute também o seguinte antes de instalar:

sudo apt-get update

O VLC possui um método de operação de linha de comando chamado por cvlc. A próxima parte seria escrever um .shque chamará o comando. Eu não sou bom em escrever scripts bash. O resultado final seria algo como:

cvlc xyz.mp3
cvlc --play-and-exit done.mp3 
prometheuspk
fonte
11
cvlc muito lento para inicializar? e precisa ser executado por um usuário não root?
c2h2
11
cvlc --play-and-exit done.mp3se você não quiser pressioná-lo com a tecla Ctrl-c.
Michael Cole
cvlc --play-and-exit --no-loop done.mp3. Preciso da opção extra --no-loop, para que o arquivo de som não seja repetido repetidamente. (vlc 2.2.2, xubuntu 16.04.4)
loved.by.Jesus
note que o vlc geralmente depende de qt5 e X em alguma distribuição, mas o mpg123 depende apenas do alsa-lib.
recolic
8

Você pode simplesmente canalizar seus dados de som para o dispositivo de alto-falante do PC:

cat rawsound | /dev/pcsp
Troelskn
fonte
11
Duvido muito que isso funcione com arquivos MP3.
2
Não vai funcionar com mp3 codificado som é claro, mas ele vai trabalhar com dados wav cru
troelskn
3
Eu não tenho o dispositivo / dev / pcsp. O que mais posso tentar?
trusktr
Eu recebo "cat: rawsound: Datei oder Verzeichnis nicht gefunden"
Timo
8

No Ubuntu 16.04, não há necessidade de instalar nada. Você pode tocar um som usando paplay [audio]with faz parte do servidor de som PulseAudio:

paplay mysound.mp3
mxdsp
fonte
7

O mplayer é outro player que pode reproduzir praticamente qualquer formato de áudio / vídeo na linha de comando. para instalá-lo no ubuntu basta executar este comando:

sudo apt-get install mplayer

você pode reproduzir o arquivo usando esta sintaxe:

mplayer [path to file]

boa sorte!

Ali Parsai
fonte
0

canberra-gtk-play

Para scripts simples do bash, o mplayer é provavelmente um pouco pesado e muito detalhado em termos de saída. Uma opção embutida é canberra-gtk-playpré-instalada no ubuntu:

canberra-gtk-play --file=/usr/share/sounds/gnome/default/alerts/drip.ogg

Nota: ele usa o volume de alertas e você deve passar --file=para reproduzir um arquivo a partir de um caminho.

Ele também pode reproduzir um som por id, que representa o nome do arquivo sem a extensão dos arquivos de mídia /usr/share/sounds(aparentemente isso só funciona para sons registrados como parte de um tema de som):

canberra-gtk-play --id="desktop-login"

canberra-gtk-play --id="message"

gst-launch-1.0 / gst-launch-0.10

Outra opção é usar as ferramentas de linha de comando gstreamer, presentes nas mais modernas caixas Linux:

gst-launch-1.0 playbin uri=file:///usr/share/sounds/ubuntu/stereo/message.ogg

Para suprimir toda a saída, redirecione-a para /dev/null:

gst-launch-1.0 playbin uri=file:///usr/share/sounds/ubuntu/stereo/message.ogg > /dev/null 2>&1

Ambos gst-launch-1.0e gst-launch-0.10podem estar presentes no seu sistema.

ccpizza
fonte
0

adicionando uma resposta para as pessoas que passarão aqui (a pergunta tem 2011, agora é 2019), porque eu encontrei outra maneira:

O ffmpeg está instalado no meu ubuntu 19.04

Assim:

$ ffplay music.mp3 

-nodisp
hide spectrum analyzer

-nostats
hide cursor/file informations

-hide_banner
hide build informations


hide all (no output):
$ ffplay music.mp3 -nodisp -nostats -hide_banner

aproveite 🤙

Gromish
fonte