Вывод аудио на несколько источников на raspberry pi

от автора

В статье пойдет речь о том как вывести аудио, проигрываемое на raspberry pi на несколько источников (проигрывателей) одновременно. В частности, аудио будет параллельно транслироваться по hdmi, на audio jack, bluetooth устройство (устройства).

Вопрос прикладной, но в интернете не удалось найти готовое решение, поэтому родился данный короткий пост.

Устанавливаем пакеты

pip3 install pygame==2.1.2 sudo apt-get install python3-sdl2 sudo apt install paprefs sudo apt install pavucontrol 

Перезагружаемся.

Настраиваем

Заходим в «Pulseaudio Preferences» —

и ставим галочку, перейдя на вкладку «Simultaneous Output» —

Теперь открываем «PulseAudio Volume control» —

и убеждаемся, что там появилось новое устройство вывода среди output devices —

При этом абсолютно неважно, Что у вас выбрано в качестве output устройства в данный момент —

По желанию, можно подключить несколько bluetooth устройств к raspberry —

Небольшой код

Теперь напишем код, который и будет выводить аудио на несколько устройств одновременно.

import pygame._sdl2 as sdl2 from pygame import mixer from time import sleep  mixer.init()# Initialize the mixer, this will allow the next command to work print(sdl2.audio.get_audio_device_names(False)) # Returns playback devices, Boolean value determines whether they are Input or Output devices. def output_devices(): #возвращает device, который включает все play devices     for i in sdl2.audio.get_audio_device_names(False):         if i.startswith ('Simultaneous'):             return i         else:             continue a=output_devices() mixer.quit()   #mixer.init(devicename = 'Simultaneous output to Встроенное аудио Digital Stereo, Встроенное аудио Analog Stereo, JBL GO') # Initialize it with the correct device mixer.init(devicename = a) mixer.music.load("english.wav") # Load the mp3 mixer.music.play() # Play it  while mixer.music.get_busy():  # wait for music to finish playing     sleep(1)

После запуска звук должен политься из всех устройств одновременно.

Суть программы в том, что она перебирает все устройства вывода на raspberry, находит то из них, которое начинается со слова «Simultaneous» и выводит на него звук.

Полностью наименование этого устройства выгладят примерно так: «Simultaneous output to Встроенное аудио Digital Stereo, Встроенное аудио Analog Stereo, JBL GO».

Код программы — здесь
Аудио для теста — здесь


ссылка на оригинал статьи https://habr.com/ru/post/666312/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *