Szukam dobrze utrzymanej biblioteki Python, która pozwala mi odtwarzać pliki audio na moim Raspberry Pi przy użyciu standardowego wyjścia audio.
Do tej pory wypróbowałem kilka, ale żadna z nich nie działa. Mimo że pyglet działa dobrze na moim zwykłym komputerze, powoduje błąd na Raspberry Pi. Czy istnieje biblioteka Python, która okazała się łatwa w użyciu?
Odpowiedzi:
Polecam popularną grę Pygame. Mogę się mylić, ale wierzę, że jest wstępnie zainstalowany na Pi. Możesz użyć Pygame Mixer Music Module do odtwarzania plików audio. Poniżej zamieściłem przykładowy kod.
Zakładając, że mamy plik audio o nazwie
myFile.wav
.UWAGA: Jeśli to się nie powiedzie, przejdź do terminala i zaktualizuj swój system za pomocą
i spróbuj ponownie.
źródło
espeak
dobrze, ale nie to.Potrzebowałem skryptu, aby odtwarzać utwór w tle z trzydziestu sekund w tle, odpowiadając na opinie innych użytkowników. Potem chciałem, żeby to zakończyło utwór na jakimś wydarzeniu.
Nie sądzę, że jest to szczególnie eleganckie, ale otworzyłem potok do procesu MPlayera w tle.
Następnie, gdy chciałem zakończyć proces MPlayera, po prostu napisałem „q”, aby wyjść z potoku.
Przejrzyj dokumentację MPlayera, aby znaleźć wszelkiego rodzaju polecenia, które możesz przekazać w ten sposób, aby kontrolować odtwarzanie.
Mam nadzieję, że to nieco pomocne!
źródło
Inną opcją jest użycie
mpg321
i wywołanie go z wiersza poleceń.Następnie w Pythonie:
Pygame jest prawie na pewno solidniejsza, ale przypuszczam, że zależy to od twoich potrzeb.
źródło
Polecam pyglet zamiast Pygame jeśli nie potrzebujesz grafiki. Moim zdaniem jest prostszy, bardziej elegancki i lepiej utrzymany. Z drugiej strony oczekuję, że może to być kwestia gustu.
źródło
Pygame zapewnia przyjemny i łatwy sposób ładowania i odtwarzania dźwięków na różnych kanałach.
źródło
Możesz korzystać z wielu zewnętrznych odtwarzaczy przez rury. Jednak prawie zawsze doświadczasz utraty prędkości. Występuje również problem z kontrolą odtwarzania.
Polecam wam pyaudio, działa dobrze.
Jeśli chcesz również odtwarzać pliki skompresowane, będę mógł swobodnie wskazać Ci mój moduł decoder.py. Możesz go znaleźć na PyPI.
Wykorzystuje również podproces, ale zamiast odtwarzaczy wywołuje dekodery. Nie używają dużo procesora, a niektórzy wiedzą, jak korzystać z akceleracji sprzętowej. Następnie możesz użyć pyaudio lub czegoś innego, aby wyprowadzić surowe dane audio. Jeśli chcesz, możesz nawet użyć pygame, używając pygame.sndarray. W ten sposób możesz odtwarzać więcej formatów niż obsługuje pygame.
Próbowałem decoder.py w środowisku PyQT GUI, z pyaudio, a także używając aplay jako zewnętrznego odtwarzacza. To było na Raspberry Pi B.
Wyniki były w obu przypadkach całkiem satysfakcjonujące.
Prostota może być kwestionowana.
decoder.py sam w sobie jest bardzo prosty, ale musisz go połączyć z innymi bibliotekami lib, co zwiększa linie kodu.
Istnieje przykład odtwarzania plików zawartych w pliku decoder.py.
źródło
Używam OSMC (Debian) i mam dźwięk do odtwarzania przez głośniki telewizora, które są podłączone przez HDMI. https://youtu.be/p2ljmTE67gs
Moja metoda była oparta na powyższym rozwiązaniu opublikowanym przez @xxmbabanexx, a także tutaj . Zasadniczo, musiałem dodać
dtparam=audio=on
do/boot/config.txt
źródło