LINUX.ORG.RU

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

 


1

1

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

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

★★

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

deep-purple ★★★★★
()
Ответ на: комментарий от comp00

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

i82 ★★
() автор топика
Ответ на: комментарий от deep-purple

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

i82 ★★
() автор топика
Ответ на: комментарий от deep-purple

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

i82 ★★
() автор топика
Ответ на: комментарий от i82

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

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

deep-purple ★★★★★
()
Последнее исправление: deep-purple (всего исправлений: 1)
Ответ на: комментарий от i82

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

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

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

i82 ★★
() автор топика
Ответ на: комментарий от i82

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

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

deep-purple ★★★★★
()

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

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

ffmpeg -re -f alsa -i hw:0,0 -acodec mp3 -ab 8k -f rtsp -muxdelay 0.1 rtsp://SERVER:5545/live

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

$ git clone https://github.com/revmischa/rtsp-server && cd rtsp-server
$ sudo rtsp-server.pl

3) Клиенты

ffplay rtsp://SERVER/live

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

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

i82 ★★
() автор топика
Ответ на: комментарий от lazyklimm

Это, конечно, крутая штука. Но, кажется, что для моей задачи это слишком сложно :-)

i82 ★★
() автор топика
Ответ на: комментарий от amorpher

Спасибо за ссылку, прямо что называется в руку: nginx + rtmp + ffmpeg + нарастающая задержка в ffplay

Пытаюсь уже вещать с помощью nginx и rtmp. Всё устраивает, но со временем набегает задержка в ffplay... Может в вашей статье есть что-то по этому поводу, пока не читал внимательно.

i82 ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.