Es gibt fünf Hauptmethoden wie folgt.
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.
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.
Beim Öffnen sieht es so aus.
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.
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.
Hier können Sie festlegen, ob Musik über HDMI oder über die Kopfhörerbuchse ausgegeben werden soll
Es gibt zwei Arten.
$ 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
Öffnen Sie zunächst das Konfigurationstool.
$ sudo raspi-config
Wählen Sie danach das Ausgabeziel aus 7. Erweiterte Option → A9 Audio.
Erledigt.
Unabhängig davon, welche Methode Sie verwenden, tritt bei der Ausgabe über die Kopfhörerbuchse Rauschen auf. Die Lösung ist
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.
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