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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!


В статье пойдет речь о том как вывести аудио, проигрываемое на 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/


Интересные статьи

Интересные статьи

Артефакты, которые отличают подделку от реальных данных, могут находиться в спектральной или временной областях. Их надежное обнаружение обычно зависит от ансамбля сложных систем, где каждая подсистем...
Все айтишники знают, что процессор это сердце компьютера, как персонального, так и серверного. Да и не только компьютера. Процессоры есть и в смартфонах, некоторой бытовой технике и даже в детских игр...
Печатные машинки, кассетные магнитофоны, дисковые телефоны, первые ПК стали историей, а издаваемые ими звуки — уже далеко не в рядах наиболее узнаваемых. Но есть энтузиасты, которые н...
В этой статье я расскажу, как собрать Stratum 1 NTP сервер на Raspberry PI для синхронизации времени за скромную сумму и навсегда забыть о проблемах, связанных с не совпадающим времен...
Во многих инструкциях с просторов интернета описывают некий минимум действий, и как следствие минимум команд и возможностей. Я решил сделать некую подборку мало освещенных возможностей, особенно...