0

我正在尝试在空闲时间制作一个基于 python 的音乐播放器。我正在使用 Raspberry Pi 4、Python 3.7 和最新版本的alsaaudiopygame

当我尝试在特定音频通道中输出声音时,问题就来了。如果我是 root 用户,我想我有不同的频道,或者我无法访问这些频道。我需要能够以root用户身份运行此脚本,因为我将其添加到其中/etc/rc.local,因此它始终在运行。

当我从终端以默认pi用户身份运行此代码时,此代码将起作用,但作为root用户将失败:

import pygame
import alsaaudio
from time import sleep

# Setting the volume to 100% on the headphones jack output
m = alsaaudio.Mixer('Headphone')
m.setvolume(100)

# Starting the player
pygame.mixer.pre_init(devicename="bcm2835 Headphones, bcm2835 Headphones")
pygame.mixer.init()

# Load and play song
pygame.mixer.music.load("/home/pi/music_file.mp3")
pygame.mixer.music.play()
sleep(5) # Just want to play for a small amount of time, just for testing
pygame.mixer.music.pause()

以root用户身份运行时出现此异常:alsaaudio.ALSAAudioError: Unable to find mixer control Headphone,0 [default]

alsaaudio部分可以避免,因此可以将这两行注释掉,并且仍然可以获得有用的结果。

我通过运行我在此处(Oleg 的答案)、那里那里找到的一些代码片段获得了设备名称('Headphone'和) 。"bcm2835 Headphones, bcm2835 Headphones"

我想一个不错的选择是将混音器添加到root用户,但每次我在另一台设备上安装程序时都需要这样做。也许我错过了一些可以使这更容易的东西。

提前致谢!

4

0 回答 0