Linux трансляция звука с микрофона

Трансляция звука с микрофона в сеть

Есть ли какие-то решения, позволяющие получить real-time звучание в топологии «один-ко-многим», без мультикаста. Я пробовал icecast2/darkice, ffmpeg/rtp, ffmpeg/ffserver. Но всё это меня не устроило. Какое-то глюкалово, в целом.

Кто решал, подскажите?

Тебя web интересует?

Я тут давеча обещался кому-то написать реалтайм стримилку после переезда на новое ПМЖ. Но я еще не переехал. Так что подписался на тред. Может оно уже есть. Хотя я так же не могу обещать ну прям ваще рилтайм — это зависит от минимальных размеров буфера и полупериода для конкретных частот дискретизаций при конкретном качестве сети (сопли, канал, хопы) и при конкретной звуковой карты. Т.е. поставить маленький буфер можно, но будет ловить хрюны (XRUN) по вот всем этим причинам.

Меня интересует любое решение, в котором клиенты смогут забирать потоки через vlc/ffplay и аналоги.

Ну меня устраивает mp3/8k, ffmpeg отлично умеет забирать данные с alsa/hw0,0 и кодировать их в этот формат. Но вот что с этим делать дальше 🙂

ffserver пробовал? А, вижу, пробовал. И чем не устроило?

Слушай, с ним вообще какая-то шляпа. Я так понял, что он фиды в виде файлов сохраняет и это нихрена не real-time, т.к. он их раздаёт потом по HTTP.

Именно. Только это не простой файл, а типа кольцевой буфер. И он гоняет по нему всех приконнекченых клиентов. И там такая трабла, что если у какого-то клиента сеть гавно, то буфер «растягивается» ради самого тормозного клиента. В противном случае, если клиента «подгонять» в позиции к самому быстрому клиенту, то этот медленный клиент будет получать сегментированные данные. В итоге будут хрюны, или вообще клиент не сможет распаковать мп3. Об этом я и писал в сообщении выше-выше.

А теперь еще добавь сюда проблему что тактовые генераторы на разных машинах имеют не идентичную частоту колебания.

Так это, чего делать-то?

Уменьшить размер файла-буфера. Но! Я вообще-то не в курсе можно ли так наконфижить ффсервер чтобы он клал на самого медленного клиента.

Там 16K минимально. Ну я ставил столько, всё-равно херня какая-то. Стриминг в фида отрубаешь, а клиент что-то получает потом ещё по кругу 🙂

Ну вот и приплыли. ПОтому что оно не реалтаймовое изначально.

Пошурши в пульсаудио. Народ говорил есть истории успеха.

Вот что пока получается:

1) Раздача микрофона

2) Серверная часть

Задержка около 1.5 секунды.

Но есть одна проблема — клиент (или сервер) не понимает, что был обрыв вещания и соответственно при его восстановлении на клиенте звука уже нет.

В общем, кому интересно, обёртка для ffplay, позволяющая определять нештатные дисконнекты:

Источник

Транслировать поток с микрофона в сеть

Имеется: веб-камера с микрофоном, роутер D-Link DIR-320 с прошивкой OpenWRT. В прошивке имеются драйверы на звук, когда подключаю вебку к роутеру, появляются нужные устройства, в частности /dev/dsp, и судя по всему корректно работают: если набрать cat /dev/dsp в консоль сыпется шум.
Вопрос: каким образом можно транслировать звук с микрофона по сети? Всякие icecast, ffserver и vlc не подходят, т.к. слишком тяжелые, и в прошивку не влезут. Нужно тупо гнать поток с устройства в сеть, без перекодировки.
Подскажите, чем это можно сделать. Возможно есть какой-то легковесный софт, или еще как.

Читайте также:  Windows список зарегистрированных dll

подключи флешку и сделай её корнем, и тогда сможешь ставить всё что влезет

Возможно есть какой-то легковесный софт, или еще как.

Флешку подключить не вариант, т.к. единственный порт на роутере уже занят веб-камерой, а хаба под рукой нет.
А вот вариант с nc интересен, попробую, спасибо.

Для подобных вещей есть PulseAudio. Но в твоём случае лучше транслировать через nc, хотя не сказал бы, что это эффективно.

Решил ради интереса вкомпилить в прошивку PulseAudio, и на мое удивление размер прошивки получился приемлемым, т.е. у меня получилось засунуть в роутер PulseAudio!
Теперь вопрос — что с ним дальше делать, чтобы оно передавало звук с микрофона в сеть? 🙂
Если вопрос глупый, прошу не бить, а ткнуть носом в мануал.

> Теперь вопрос — что с ним дальше делать, чтобы оно передавало звук с микрофона в сеть? 🙂

> Ээ. сконфигурить?
Ну это понятно. В сети есть мануалы, как заставить передавать звук с компа на pulse-сервер, т.е. чтобы воспроизводить звук через роутер. Мне же нужно наоборот снимать звук с микрофона и передавать во вне.

ну а так в чём разница?
роутер — тот же комп, передавай с него звук куда хочешь и там уже транслируй через vlc, например

Источник

AVReg 5: захват и запись звука с микрофонов и USB-камер.

Преамбула.

Ниже описывается решение, позволяющее обеспечить захват и запись аналогового аудио:

Несмотря на то что это решение по сути „костыль”, оно достаточно надёжное и очень гибкое, т.к. позволяет записывать аудио с микрофона физически подключенного не только к локальному, но и к любому компьютеру или Wi-Fi роутеру в сети, а также программно обрабатывать звук (громкость, нормализация и т.п.).

Суть решения

AVReg 5 (демон avregd_5.x) не умеет напрямую работать с локальными аудио-устройствами (= ALSA-устройствами, в linux), но он может принимать по http/tcp аудиопотоки в форматах pcm, g.726 и AAC(rtp внутри http).

Поэтому, нужно просто найти набор програм, которые обеспечат захват аудио с ALSA-аудиоустройств и трансляцию аудиопотока в понятном avregd формату по протоколу tcp.

Записывающие ALSA-устройства.

Первая ваша задача — определить alsa-имя для ссылки на микрофон или линейный вход, которое (имя) представляет собой строку «hw:, », где и нужно заменить на цифры (см. ниже) или симвлольные идентификаторы (не рассматривал).

Универсальных советов не бывает, поэтому приведём конкретный пример, чтобы была понятна логика действий.

Для этого мы будем использовать информацию из /proc/asound/ , как наиболее достоверную, т.к. она формируется непосредственно alsa-драйверами.

Отсюда ясно что можно подставлять в значение :

Теперь осталось определится с .

Абсолютно ясно стало только с USB-камерой, т.к. у неё только один микрофон, и alsa-имя однозначно получается как « hw:1,0 ».

Со встроенной ALC1200 сложнее, у неё аз 3 порта ввода (записи): 2,1 и 0 (вторая колонка цифр внутри квадратных скобок).

Анализируем вторую колонку цифр. Сразу отбросим порт 01 т.к. он цифровой «ALC1200 Digital» (к нему микрофон не прицепишь), а нам нужен аналоговый вход. Остались 02 ( hw:0,2 ) и 00 ( hw:0,0 ). Соответствие физическим разъёмам и наименованием регулятором громкости в alsamixer мы определили уже опытным путём.

Проверяем, сначала записываем а затем проигрываем звук с USB-камеры:

, а теперь с микрофона, подключенного к звуковой плате:

Настраивайте громкость тем чем привыкли или alsamixer (запускать в терминале).

Захват аудио и трансляция по сети.

Настройки аудио-трансляции (передача)

Gstreamer

Если у вас установлена графическая оболочка с Гномом (и видеопроигрывателем Totem), скорее всего все необходимые gstreamer компоненты уже установлены, если нет — выполните в терминале:

На компьютере, куда подключен микрофон (к звуковой плате и/или плате видеозахвата, поддерживаемая alsa) или установлена USB-камера:

netcat

Ниже приводим 2 рецепта с netcat-ом, т.к. пакетов мультимедийного фреймворка Gstreamer может и не быть для маршрутизаторов на OpenWRT/DD-WRT/etc.

установка классического (не openbsd!) netcat

Эта командой (см. ниже) будет запущен tcp сервер на интерфейсе с адресом АДРЕС на tcp-порту ПОРТ и который будет отдавать подключившемуся клиенту stdout-вывод команды КОМАНДА.

Источник

Сетевой аудиосервер на основе pulseaudio в ubuntu

Настройка клиента

Настройка клиента тривиальна. Ставим утилиту, которая сидит в трее и помогает быстро переключаться между серверами pulseaudio.
sudo apt-get install pulseaudio padevchooser

Далее запускаем её:
Меню — Sound & Video — PulseAudio Device Chooser
Добавим в автозапуск. Для этого щёлкаем на иконку в трее и выбираем пункт Preferences… Отмечаем флажок «Start applet on session login».

После настройки сервера его можно выбрать в меню.

Теперь любая программа, использующая pulseaudio для вывода звука, может воспроизводить звук через аудиокарту удалённого компьютера.

Настройка сервера

1. Ставим Avahi, если не стоит:
sudo apt-get install avahi-daemon

2. Нам необходим pulseaudio и модуль, автоматически размещающий данные о наличии аудиосервера в локальной сети через службу Avahi.
sudo apt-get install pulseaudio pulseaudio-module-zeroconf

3. Создадим группу audio, участники которой имеют право доступа к аудиоустройствам:
sudo groupadd audio

4. Добавим себя в эту группу:
sudo gpasswd -a user audio

5. Добавим себя ещё и в эту группу, для доступа к pulseaudio:
sudo gpasswd -a user pulse-access

6. Поставим alsa.
sudo apt-get install alsa libasound2-plugins

7. Убедимся, что вам доступны аудиоустройства. Эта комманда покажет список доступных устройств в системе.
aplay -l

8. Подправим конфиг pulseaudio:
sudo nano /etc/pulse/default.pa

У меня пропадал сигнал на alsa устройстве при одновременно включенных module-native-protocol-tcp и module-udev-detect (предположительно это баг или мои кривые руки), поэтому я убрал автоопределение звуковых карт через udev, удалив эту часть конфигурационного файла
### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Alternatively use the static hardware detection module (for systems that
### lack udev support)
load-module module-detect
.endif
и раскомменторовав это
### Load audio drivers statically (it’s probably better to not load
### these drivers manually, but instead use module-hal-detect —
### see below — for doing this automatically)
load-module module-alsa-sink

Для доступа из сети к аудиосерверу раскомментируете это и добавьте параметры загрузки модуля module-native-protocol-tcp:
### Network access (may be configured with paprefs, so leave this commented
### here if you plan to use paprefs)
load-module module-esound-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-zeroconf-publish
где 127.0.0.1;192.168.0.0/16 — это сети, в которых будет доступен наш сервер. Так же не забудьте открыть доступ к pulseaudio в iptables.

9. Теперь нужно перезагрузить сервер. Если все прошло успешно — то у наш сервер должен появится в PulseAudio Device Chooser у клиента

Запустить аудиосервер можно, запустив следующую комманду от имени пользователя:
pulseaudio -D
Остановить так:
pulseaudio -k

Источник

Потоковая трансляция звука из Linux

Добрый день!
Возникла необходимость настроить потоковое вещание звука из Linux. Есть два компьютера в одной локальной сети. На одном стоит Ubuntu 19.10, на другом Windows 10. Мне нужно все звуки на компьютере с Ubuntu 19.10 выводить вместо его колонок в сеть. То есть я хотел бы запустив на компе с Windows 10 что-то типа VLC-плеера, указав в VLC-плеере IP-адрес компа с Ubuntu, слышать абсолютно все звуки компа с Ubuntu (и системные тоже) в VLC-плеере запущенном на компе с Windows 10.
Мне казалось, что эта задача на сегодня не такая уж сложная, но перерыл кучу инфы в Интернете и не нашёл решения. Есть инфа, как через PulseAudio что-то подобное реализовать, но там речь идёт о двух компьютерах с Linux и на обоих должна PulseAudio стоять и быть соответствующим образом настроена. Мне бы хотелось в идеале получить просто поток, чтобы с любого устройства для прослушивания потокового аудио его можно было услышать введя IP-адрес компа с Ubuntu.

Ещё нашёл инфу, как средствами VLC-плеера, который установлен на обоих компах, реализовать потоковое вещание:

Это решение мне бы подошло, но у VLC-плеера, который стоит у меня на компе с Ubuntu, у него нет «Режим захвата» – DirectShow и «Название аудиоустройства» — Line 1 (Virtual Audio Cable). По этому мне не удалось такое реализовать, как рассказано в статье по ссылке выше. Может кто знает, может там для Linux версий нужно какие то пакеты дополнительные ставить, или плагины какие для VLC?

Может кто подсказать что-либо по этому вопросу, как такое можно реализовать? Может есть программы под Linux какие либо для этого, помимо средств самой PulseAudio? Или может как-то VLC-плеер поднастроить и его средствами реализовать, как сказано в статье по ссылке выше?

Потоковая передача звука с телефона на компьютер
Добрый день Имеется телефон с установленным android 4.2.2. Требуется настроить потоковую передачу.

Трансляция звука в интернет
Стоит задача, транслировать звук в интернет. Обрадовался, когда нашёл ЭТУ статью, т.к там, то, что.

Трансляция звука на телефон
Здравствуйте, поломилось гнездо наушников на ноуте. Есть ли возможность транслировать звук на.

Трансляция видео и звука
Здравствуйте Вам! Необходимо реализовать трансляцию видео и звука с 1 машины на другую. Все это.

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Linux mint: нет звука после обновления
Нет звука после обновления, как исправить ошибку.Слепых тут нет, пишите обычным шрифтом .

Драйвера звука для Asus Maximus III Formula под LinuX Ubunta 11.10
Не получается установить драйвер звука. Мать — Asus Maximus III Formula ОС — LinuX Ubunta.

Нет звука в kali linux — стоит на virtual box. Нужно драйвера ставить или что?
Нет звука в kali linux — стоит на virtual box. Нужно драйвера ставить или что?

Потоковая обработка
В общем есть 3 потока, в них идет выполнение проверки и вывода данных на экран (в Memo). В.

Источник

Оцените статью