Header Ads

Rapsberry: Installer mpg321 sur Debian Wheezy

Introduction
mpg321 permet de jouer des fichiers MP3 en ligne de commande sur un Raspberry PI.
Il est appelable depuis des scripts Python, ce qui fait de mpg321 un candidat idéal pour de nombreux exemples.

Les dépendances... Arghh!!!
Si vous developpez en Python sur votre Raspberry, vous serez vite amené à installer pip sur votre Pi.

Installer mpg321 (sudo apt-get install mpg321) sur un Rapsberry Pi peut faire intervenir un certain nombre de dépendances "unmet" une fois de pip est installé.

Pour contourner le problème il faut lire attentivement le problème de dépendance pour y trouver une solution.

Dans mon cas, le problème de dépendance trouve sa source dans l'installation de Python2.6

La solution
Forcer l'installation de Python2.6 avec la commande:

sudo apt-get -f install  python2.6

Finaliser l'installation de mpg321
sudo apt-get -f install libao-common
sudo apt-get -f install mpg321

Si a un moment donné vous rencontrez un problème de dépendance sur libio-socket-ssl-perl_1.76-1_all.deb , faite simplement un
sudo apt-get update
et relancer l'installation à l'aide de
sudo apt-get -f install mpg321

Prise HDMI/DVI et sortie audio
Attention: cette notre est importante
Disposer d'un cable DVI/HDMI ne signifie pas que le son sortira forcement par les haut-parleur du moniteur.
Raccorder la prise jack sur le moniteur ne signifie pas forcement que le son passera... car certain moniteur s'obstinent à utiliser l'entrée son HDMI/DVI même si la prise Jack est utilisée.

Le plus simple pour tester le tout est de raccorder un casque audio sur la prise Jack et de forcer la sortie audio sur cette sortie.
Au moins, après cela, il devient plus facile de trouver une solution aux problème car l'on sait déjà que Raspberry produit du MP3 :-)

Pour forcer la sortie audio sur la prise casque, il faut utiliser la commande suivante:
sudo amixer cset numid=3 1

Le dernier 1 force l'utilisation de la prise casque.
Les différentes valeurs possibles sont:
0=auto, 1=headphones, 2=hdmi

Vous trouverez de nombreuses informations utiles sur le lien suivant:
Why is my audio sound output not working


Jouer un fichier MP3
La commande est aussi simple que
mpg321 -o alsa http://archive.org/download/testmp3testfile/mpthreetest.mp3

Cette commande devrait également fonctionner sans le paramètre "-o alsa".

Jouer un fichier MP3 depuis Python
C'est relativement simple comme expliqué dans ce tutoriel AdaFruit.
Lorsqu'un bouton (branché sur le GPIO est pressé), le programme joue un fichier MP3 spécifique.

    #!/usr/bin/env python
     
    from time import sleep
    import os
    import RPi.GPIO as GPIO
     
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(23, GPIO.IN)
    GPIO.setup(24, GPIO.IN)
    GPIO.setup(25, GPIO.IN)
     
    while True:
    if ( GPIO.input(23) == False ):
    os.system('mpg321 binary-language-moisture-evaporators.mp3 &')
    if ( GPIO.input(24) == False ):
    os.system('mpg321 power-converters.mp3 &')
    if ( GPIO.input(25)== False ):
    os.system('mpg321 vader.mp3 &')
    sleep(0.1);

Jouer un fichier audio est aussi simple que d'appeler os.system avec la ligne de commande. Le "&" en fin de ligne indique à l'OS d'exécuterla commande en arrière plan.