#python #audio #audio-streaming
#python #Аудио #потоковое аудио
Вопрос:
Я пытаюсь написать клиент потокового аудио и хотел бы использовать функции ossaudiodev, которые помогут мне воспроизводить аудио на моем локальном компьютере. К сожалению, я получаю исключение каждый раз, когда пытаюсь запустить свой код:
Unhandled exception in thread started by <function audioplayer at 0x88e96f4>
Traceback (most recent call last):
File "client.py", line 56, in audioplayer
audio = ossaudiodev.open("/dev/audio", 'w')
IOError: [Errno 16] Device or resource busy: '/dev/audio'
Вот мой код. По-моему, довольно просто, но не уверен, как освободить ресурс /dev / audio.
def audioplayer():
audio = ossaudiodev.open("/dev/audio", 'w')
audio.setfmt(ossaudiodev.AFMT_MU_LAW)
audio.channels(2)
audio.speed(8000)
packet = 0
sleep(.20) # give it a little bit of time to fill ze buffers
while (packets[packet] != ""):
audio.write(packets[packet])
packet = 1
Какие-либо хитрости для этого?
Редактировать: ответ очевиден и глуп. Я играл в pandora во время выполнения кода, поэтому динамики были «заняты» этим. Кто-нибудь может пояснить, почему это так? Как другие приложения могут запускать несколько аудиопотоков одновременно, а я, похоже, не могу?
Ответ №1:
Даже в системах, где он доступен, интерфейс OSS обычно является просто фасадом над ALSA. Рассмотрите возможность использования библиотеки, поддерживающей несколько интерфейсов, таких как pyao.
Ответ №2:
ваш менеджер рабочего стола уже использует вашу звуковую карту, возможно, вам повезет больше с плагином dmix для alsa, но это часто бывает сложно
soundblaster live имеет hw-микширование, поэтому вы можете открывать его несколько раз
и да, окончательно вы можете найти работающий сервер pyao