표준 오디오 출력을 사용하여 Raspberry Pi에서 오디오 파일을 재생할 수있는 잘 관리 된 Python 라이브러리를 찾고 있습니다.
지금까지 나는 여러 가지를 시도했지만 그중 아무것도 작동하지 않는 것 같습니다. 피그 릿이 일반 컴퓨터에서도 제대로 작동하지만 Raspberry Pi에서 오류가 발생합니다. 사용하기 쉬운 것으로 입증 된 Python 라이브러리가 있습니까?
표준 오디오 출력을 사용하여 Raspberry Pi에서 오디오 파일을 재생할 수있는 잘 관리 된 Python 라이브러리를 찾고 있습니다.
지금까지 나는 여러 가지를 시도했지만 그중 아무것도 작동하지 않는 것 같습니다. 피그 릿이 일반 컴퓨터에서도 제대로 작동하지만 Raspberry Pi에서 오류가 발생합니다. 사용하기 쉬운 것으로 입증 된 Python 라이브러리가 있습니까?
답변:
널리 사용되는 파이 게임을 추천합니다 . 내가 틀렸을 수도 있지만 Pi에 사전 설치되어 있다고 생각합니다. Pygame Mixer Music Module 을 사용하여 오디오 파일을 재생할 수 있습니다. 아래에 예제 코드가 포함되어 있습니다.
오디오 파일이 있다고 가정합니다 myFile.wav
.
import pygame
pygame.mixer.init()
pygame.mixer.music.load("myFile.wav")
pygame.mixer.music.play()
while pygame.mixer.music.get_busy() == True:
continue
참고 : 이 작업이 실패하면 터미널로 이동하여 시스템을 업데이트하십시오.
apt-get update
apt-get upgrade
다시 시도하십시오.
espeak
잘 작동하지만 이것은 아닙니다.
다른 사용자 입력에 응답하면서 백그라운드에서 30 초 동안 노래를 재생하는 스크립트가 필요했습니다. 그런 다음 일부 이벤트에서 노래를 끝내기를 원했습니다.
특히 우아하다고는 생각하지 않지만 배경 MPlayer 프로세스에 파이프를 열었습니다.
import subprocess
player = subprocess.Popen(["mplayer", "song.mp3", "-ss", "30"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
그런 다음 MPlayer 프로세스를 종료하고 싶을 때 단순히 파이프에 종료하기 위해 "q"를 썼습니다.
player.stdin.write("q")
재생을 제어하기 위해 이러한 방식으로 전달할 수있는 모든 종류의 명령은 MPlayer 설명서를 참조하십시오.
희망적으로 그것은 다소 도움이됩니다!
파이프를 통해 여러 외부 플레이어를 사용할 수 있습니다. 그러나 거의 항상 속도 손실이 발생합니다. 재생 제어에 문제가 있습니다.
pyaudio를 추천합니다. 잘 작동합니다.
압축 파일도 재생하려면 자유롭게 내 모듈 decoder.py를 지정하십시오. PyPI에서 찾을 수 있습니다.
또한 하위 프로세스를 사용하지만 플레이어 대신 디코더를 호출합니다. 그들은 많은 CPU를 사용하지 않으며, 일부는 하드웨어 가속을 사용하는 방법을 알고 있습니다. 그런 다음 pyaudio 또는 무언가를 사용하여 원시 오디오 데이터를 출력 할 수 있습니다. 원하는 경우 pygame.sndarray를 사용하여 pygame을 사용할 수도 있습니다. 이런 식으로 파이 게임이 지원하는 것보다 더 많은 형식을 재생할 수 있습니다.
PyQT GUI 환경에서 pyaudio와 함께 aplay를 외부 플레이어로 사용하여 decoder.py를 시도했습니다. 그것은 Raspberry Pi B에있었습니다.
두 경우 모두 결과가 매우 만족 스러웠습니다.
단순성에 의문을 제기 할 수 있습니다.
decoder.py 자체는 매우 간단하지만 다른 라이브러리와 결합해야하므로 코드 줄이 증가합니다.
decoder.py에 포함 된 파일을 재생하는 방법에 대한 예가 있습니다.
OSMC (Debian)를 실행 중이고 HDMI로 연결된 TV 스피커를 통해 사운드를 재생할 수 있습니다. https://youtu.be/p2ljmTE67gs
내 방법은 여기 뿐만 아니라 @xxmbabanexx에 의해 게시 된 위의 솔루션을 기반으로했습니다 . 기본적으로 추가 dtparam=audio=on
해야했습니다/boot/config.txt