So spielen Sie Musikdateien (WAV / MP3) auf Raspberry Pi Python ab

Wie man Musik mit Python spielt

Es gibt fünf Hauptmethoden wie folgt.

  1. pygame
  2. PyAudio
  3. vlc
  4. aplay
  5. mpg321

In diesem Beitrag

Ich werde hauptsächlich schreiben.

Außerdem werden 3. ~ 5. häufig verwendet, wenn Sie nur Musik auf Raspberry Pi abspielen möchten, nicht auf Python. Aplay in 4. ist standardmäßig enthalten, aber wenn Sie vlc installieren, können Sie Musik abspielen und einfach basierend auf der GUI bearbeiten, was ich für praktisch halte.

1.pygame

Es scheint, dass ein Modul namens pygame standardmäßig im Python-Paket von Raspberry Pi installiert ist. Der Code unten.

audio_pygame.py


#!/usr/bin/env python
#-*- cording: utf-8 -*-

import pygame.mixer
import time

#Initialisierung des Mischermoduls
pygame.mixer.init()
#Musikdateien lesen
pygame.mixer.music.load("Dateiname.mp3")
#Einstellungen für Musikwiedergabe und Wiedergabeanzahl(-1 ist die Loop-Wiedergabe)
pygame.mixer.music.play(-1)

time.sleep(60)
#Ende der Wiedergabe
pygame.mixer.music.stop()

mixer.music ist ein Modul zum Abspielen von Musik. Sie können MP3-Dateien und Ogg-Dateien lesen. * Hinzugefügt am 12. Februar 2017 </ font> pygame.mixer.music wurde wav-Datei-Wiedergabe nicht unterstützt </ font>!

Verwenden Sie das mixer.Sound-Modul, um kurze Sounds wie Soundeffekte abzuspielen. Das Sound-Modul kann WAV-Dateien abspielen, es gibt jedoch ein Limit von 500 KB oder weniger.

Einzelheiten entnehmen Sie bitte der folgenden japanischen Referenz. Pygame.mixer im Allgemeinen pygame.mixer.music

2.PyAudio

Zunächst einmal, wie zu installieren. Apt-get Installation mit LXTerminal (Befehlszeile).

$ sudo apt-get install python-pyaudio python3-pyaudio

Referenz: PyAudio

Der Code lautet wie folgt.

audio_PyAudio.py


#-*- cording: utf-8 -*-

import wave
import pyaudio

#Geben Sie die Anzahl der Chunks an
CHUNK = 1024
filename = "Dateiname.wav"

#Erstellen Sie eine Instanz von PyAudio
p = pyaudio.PyAudio()

#Stream generieren
stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
                channels=wf.getnchannels(),
                rate=wf.getframerate(),
                output=True)

"""
 format:Datentyp beim Lesen und Schreiben von Streams
 channels:1 für Mono, 2 für Stereo, keine anderen Nummern
 rate:Abtastfrequenz
 output:Ausgabemodus
"""

#Lesen Sie jeweils 1024 Daten
data = wf.readframes(CHUNK)

#Lauf
while data != '':
    #Zum Streamen schreiben
    stream.write(data)
    #Lesen Sie 1024 erneut
    data = wf.readframes(CHUNK)

#Beenden Sie die Verarbeitung, wenn die Datei fertig ist
stream.stop_stream()
stream.close()

p.terminate()

Referenz: Takeshi-Memorandum

Ich habe verschiedene Dinge ausprobiert, aber es gab kein Beispiel für das Abspielen einer MP3-Datei mit PyAudio. Alle sind WAV-Dateien.

Wie Sie dem obigen Programm entnehmen können, wird Musik abgespielt, während ständig Daten durch Streaming gelesen werden.

Der Ton kann auch intermittierend abgespielt werden. Der Stapelüberlauf hatte auch ein [Berichtsbeispiel](http://ja.stackoverflow.com/questions/23655/raspberry-pi klingt mit pyaudio nicht richtig nach WAV-Dateien), aber es wurde eine grundlegende Lösung gefunden. Es scheint nicht so zu sein. * Hinzugefügt am 12. Februar 2017 </ font> Wir haben festgestellt, dass die Ursache für die abgehackte Wiedergabe die Abtastgröße, die Abtastrate und die Anzahl der Kanäle der Musikdatei war. Ich habe die Wiedergabe der folgenden WAV-Datei bestätigt. Insbesondere wenn das Sample größer ist, kann es nicht gut abgespielt werden.

  • Stichprobengröße: 16 Bit
  • Abtastrate: 44100Hz
  • Anzahl der Kanäle: 2

3.vlc Aus dem Folgenden wird der Befehl unter Verwendung eines Unterprozesses ausgeführt.

* Hinzugefügt am 12. Februar 2017 </ font> Durch Einrichten von Multithreading mit Multiprocessing usw. können Sie eine andere Verarbeitung für Python ausführen, während Sie Musik mit Suborocess abspielen. Ich tat.

Installieren Sie zuerst vlc.

$ sudo apt-get install vlc

Anschließend wird der VLC Media Player wie unten gezeigt zum Menü hinzugefügt.

スクリーンショット 2016-12-02 02.12.02.png

Beim Öffnen sieht es so aus.

スクリーンショット 2016-12-02 02.12.22.png

Jetzt können Sie Musik / Videos auf GUI-Basis abspielen und bearbeiten. (vlc kann auch WAV-Dateien in MP3-Dateien konvertieren. Referenz: Notizen statt Blogs)

Jetzt gibt es zwei Möglichkeiten, vlc in der Befehlszeile zu betreiben.

  1. Verwenden Sie den Befehl cvlc
  2. Verwenden Sie den Befehl vlc -I rc

Dieses Mal werden wir mit Methode 2 fortfahren.

audio_vlc.py


#-*- cording: utf-8 -*-

import subprocess

subprocess.call("vlc -I rc --play-and-Dateiname stoppen.wav", shell=True)

In der Befehlszeile zum Beenden der Wiedergabe

> stop

Sie müssen eingeben. Natürlich ist auch Strg + C in Ordnung.

vlc kann nicht mit Root-Rechten gespielt werden. Daher kann vlc nicht verwendet werden, wenn sudo in Bezug auf andere Bibliotheken des Programms ausgeführt werden muss.

Der Befehl vlc ist in Norian Diary geschrieben. Sie können dies auch mit dem Hilfebefehl überprüfen. Es gibt ein offizielles Wiki in vlc, daher ist es eine gute Idee, dort zu suchen.

Und vlc kann sowohl WAV als auch MP3 abspielen. Es scheint keine Obergrenze für die Dateigröße zu geben.

Dieses Mal habe ich die Ausführung in der Befehlszeile eingeführt, aber es scheint, dass es auch eine Bibliothek namens [python-vlc] gibt (https://pypi.python.org/pypi/python-vlc/1.1.2). Es gibt nur sehr wenige Informationen zu diesem Python-VLC im Internet. Es scheint also, dass die einzige Möglichkeit, es zu verwenden, darin besteht, die py-Datei mit Beispielen zu lesen.

Da der Teilprozess der erste Auftritt ist, ist diese Geschichte auch ein wenig. Es scheint, dass OS-Module wie os.system alt sind und nicht offiziell zur Verwendung empfohlen. Die Verwendung von subprocess.call anstelle von os.system scheint also der jetzt und jüngere Weg zu sein.

4.aplay aplay ist ein typischer Musikwiedergabebefehl unter Linux. Dies wird auch von einem Unterprozess wie vlc aufgerufen.

audio_aplay.py


#-*- cording: utf-8 -*-

import subprocess

subprocess.call("Name der Wiedergabedatei.wav", shell=True)

Abhängig von der Größe der Stichprobengröße wird der folgende FEHLER angezeigt.

aplay: set_params:1233:Beispielformat nicht verfügbar
Available formats:
- U8
- S16_LE

Die Stichprobengröße wurde für pyAudio angegeben, die Stichprobengröße muss jedoch auch für die Wiedergabe 16 Bit betragen.

Im Gegensatz zu vlc kann aplay mit Root-Rechten gespielt werden. Wenn Sie also mit sudo verarbeiten müssen, sollten Sie dies verwenden.

Außerdem kann aplay keine MP3-Dateien abspielen. nur WAV. Als ich versuchte, die MP3-Datei abzuspielen, floss das Geräusch weiter. Referenz: IT Girls 'Raspberry Pie Einführungskampf

5.mpg321 Es scheint, dass es ein Modul namens mpg321 gibt, um MP3-Dateien abzuspielen. (Ehrlich gesagt, wenn Sie vlc installieren, können Sie alles tun ...)

Zuerst installieren.

$ sudo apt-get install mpg321

Diese werden ebenfalls im Teilprozess wie in 3. und 4 ausgeführt.

audio_mpg321.py


#-*- cording: utf-8 -*-

import subprocess

subprocess.call("mpg321 Dateiname.mp3", shell=True)

Die Details der Videowiedergabe auf mpg321 sind im obigen IT Women's Raspy Struggle beschrieben.

Bonus 1: Angabe des Musikausgabeziels

Hier können Sie festlegen, ob Musik über HDMI oder über die Kopfhörerbuchse ausgegeben werden soll

  1. Geben Sie in der Befehlszeile an
  2. Betrieb mit raspi-config

Es gibt zwei Arten.

1. Befehlszeilenoperation

$ amixer cset numid=3 <1>

Der <> Teil ist 1 für die Kopfhörerbuchse und 2 für den HDMI-Ausgang. Wenn es 0 ist, wird es automatisch bestimmt. Referenz: Nos Diary Japanische Übersetzung des offiziellen Raspberry Pi-Dokuments

2. Betrieb mit raspi-config

Öffnen Sie zunächst das Konfigurationstool.

$ sudo raspi-config

Wählen Sie danach das Ausgabeziel aus 7. Erweiterte Option → A9 Audio.

スクリーンショット 2016-12-02 03.02.20.png スクリーンショット 2016-12-02 03.02.42.png スクリーンショット 2016-12-02 03.03.17.png

Erledigt.

Bonus 2: Klangqualität

Unabhängig davon, welche Methode Sie verwenden, tritt bei der Ausgabe über die Kopfhörerbuchse Rauschen auf. Die Lösung ist

  1. Verwenden Sie DAC
  2. Verwenden Sie USB-Lautsprecher und Kopfhörer
  3. Ziehen Sie irgendwie Musik aus dem HDMI-Terminal heraus

Es werden wahrscheinlich drei sein. (Vielleicht gibt es noch andere ...) Versuchen Sie, Musik von USB mit [USB-Kopfhöreranschlusskonverter] auszugeben (https://www.amazon.co.jp/gp/product/B007WPMIN8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1). Das Geräusch hat jedoch aufgehört.

Vorbereitung wie diese ist für die Musikausgabe von USB erforderlich.

Zusammenfassung

Als ich versuchte, Musik mit Python zu spielen, wurde ich nur mit ERROR verrückt, also schrieb ich einen zusammenfassenden Artikel. Ich hoffe, Sie finden es nützlich.

Recommended Posts