LINUXTALKS.CO

Ретрансляция аудио потока

L


0

1

Есть вопрос по твоему профилю, спрошу уж здесь чтобы между темами не прыгать.

Есть vps на дебиане, хочу сделать так - чтобы любой радио поток, одной станции которой я выберу (например она mp3 256 отдает) пережимался на этом vps в низкобитрейтный opus и мне отдавался оттуда. То есть ретранслятор сжимающий такой.

Похожее делает сервис pcradio, но я хочу свое. Только для себя, достаточно чтобы один поток тянуло.

Есть какие-то возможности с помощью распространённого свободного софта так делать?

Ну наверно есть, вообще задача чуть сложнее. Чтобы при всем этом на сервере, где пережатие, делался буфер на несколько минут, и в случае пропадания у меня на клиенте интернета на минуту он подгружал накопившееся на сервере и бесшовно играл. Так можно?

Перемещено cocucka из tox

★★★★★★★

а) Запилить баш скрипт с бесконечным циклом, внутри которого слип 1-3 секунды и запускается ффмпег. Именно ффмпег забирает внешний поток, перекрдирует его и пушит получившееся в локальный, относительно него айскаст. Этот вариант не предполагает сглаживание потери коннекта, но восстанавливает его довольно быстро. И я не уверен умеет ли айскаст в опус. Вроде умеет.

б) Отказаться от опуса. Собрать нжинкс с соответствующим модулем и продюсить с его помощью m3u8 + фрагменты в виде файлов. Этот подход искаропки даст тебе желаемый буфер в ~10 секунд и при кратковременных проблемах со стороны источника твои клиенты лишь будут слышать «проскальзывание» музыки немного вперед, аналогично перемотке.

deep-purple    
★★★★★★★★★★
Android / Firefox
Ответ на: комментарий от deep-purple

Правильно ли я понял, что при варианте б) размер фрагмента и будет этим «серверным буфером», и я могу его каким угодно задать?

А сколько этих фрагментов на сервере храниться будет?

JamesHolden    
★★★★★★★
Последнее исправление: JamesHolden (всего исправлений: 1)

Linux / Chrome
Ответ на: комментарий от JamesHolden

Фрагментов хранится некоторое количество. Список фрагов содержится в м3у8 плейлисте. Плеер, проигрывая фраги, видит, что они скоро кончатся и снова запрашивает м3у8 плейлист, который уже обновился и в нем список других новых фрагов. Если очень просто, то с каждым обновлением плейлиста удалчется самый старый фраг и добавляется новый. Энное количество фрагов суммарно и есть буфер.

deep-purple    
★★★★★★★★★★
Android / Firefox

Ну и вдогонку: вариант «б» предполагает бОльшую нагрузку на проц и насилование сетки новыми и новыми запросами за фрагами.

В твоей задаче это не особо важно, но мы, например, отказались от этого HLS в пользу ICY (расширенный HTTP с бесконечным телом ответа) – ресурсов высвободилось около 35%.

deep-purple    
★★★★★★★★★★
Android / Firefox