Захват потока



Скорее всего вы уже знаете что такое потоковое вещание (icecast, icegenerator, ezstream), поэтому теперь рассмотрим не только возможность вещать самому, но и то что можно сделать с потоком который вещаем мы сами или кто-то другой.

Границы применимости: всё ограничивается лишь вашей фантазией. Базовое применение, выглядит как просто запись треков которые играют на вашей любимой интернет-радиостации. Однако мы рассмотрим немного расширенный вариант того что можно получить. Например если на вашем роутере установлена прошивка с встроенным dlna сервером, то можно получить практически всегда пополняемую коллекцию музыки. В частности если треки складываются в директорию которую расшаривает dlna/upnp сервер, то любые устройства в вашей локальной сети будут иметь доступ к этой пополняемой коллекции.

Streamripper

Предполагается что вы уже изучили раздел связанный с установкой системы opkg на ваше устройство.

Установка сводится к:

opkg install streamripper

После чего в вашу систему должен установиться соотвествующий пакет.
На первоначальном этапе рекомендую также установить screen:

opkg install screen

Откроем для редактирования файл:

#!/bin/sh 
streamripper http://streamer-ntc-aa02.somafm.com:80/stream/1018 -d /media/DISK_A1/files/music/groovesalad -l 9000 -D "%A_-_%T" --quiet &

Основные параметры которые могут быть интересны(названия станций, треков и т.п. программа берёт исходя из метаданных передаваемых в потоке):

 
* -d директория с музыкой куда будут сохраняться файлы
* -l время работы в секундах, если небудет параметра, будет работать бесконечно, однако во избежании утечек памяти и лишней нагрузки можно поставить порог
* -s отключить создание каталога по имени станции
* -a пишем в единственный файл, если нравится один большой файл вместо кучи маленьких
* -D то на основании чего будут именоваться файлы (при этом ключь s не нужен)
* --quiet позволяет отключить информацию выводимую программой в процессе захвата потока
* & значёк амперсанда указывает на отправку программы в фоновый режим работы.

У ключа D есть несколько вариантов на основе которых он формирует название файла, по умолчанию название файла формируется из имени артиста и названия композиции, но можно использовать и другие варианты:

  • %S Поток
  • %A Артист
  • %T Название
  • %a Альбом
  • %D Дата и время (за песню)
  • %d Дата и время (за выполнение)
  • %q Порядковый номер (автоматическое обнаружение)
  • %Nq Порядковый номер (начинающийся с числа N)
  • %% Знак процента

Сохраняемся и делаем файл исполняемым:

chmod +x streamripper.sh

Запуск:

Если запускается в паре с чем-то на этомже устройстве, то можно обойтись командами:
screen -rU - присоединение к шеллу если он был ранее запущен.
ctrl+a+c - создаём ещё одно окно.
./streamripper.sh

Или если ваш захватчик потока расположен где-то в другом месте, можно создать отдельно:

screen -dmS streamripper -U ./streamripper.sh

Нюансы:

Расширение mp3 прибавляется к файлам автоматически. Программа способна захватывать потоки: mp3,aac,nsv,ogg.
В папке incomplete лежит то что по мнению программы неудалось полностью скачать, если же удалось то из это папки она перенесёт файлы в место назначения.
Также можно не создавая файла просто открыв новое окно скрина вызвать программу со всеми ключами.