Как работает интернет-радиовещание, часть 2

Как работает интернет-радиовещание, часть 2

В прошлой части мы научились захватывать звук, кодировать его в mp3 и вещать его с помощью самописаного сервера, даже с динамически меняющимися тегами, а главное, мы все это сделали самостоятельно, без применения всяких непонятных программ со скучными кнопками. Сегодня мы столкнемся с новыми трудностями и героически их преодолеем, откроем для себя новые рубежи и горизонты интернет-радиовещания и даже будем понимать, как же все это работает. Статья написана для понимания работы интернет-радио, поэтому инструкций по настройке серверов тут не будет, зато будет немного кода и много теории. Статью можно расценивать как продолжение: habrahabr.ru/post/149681/ habrahabr.ru/post/151222/

Предисловие

Надо сказать, что вот этого текста сейчас по идее быть не должно. Но перечитав статью я понял, что надо добавить несколько страниц вступления.

Какие пути есть? Протоколов передачи медии очень много, давайте посмотрим из чего же выбирать.

IP multicast — пожалуй старейший вид «трансляций», рассылка пакетов на уровне IP протокола (не важно что внутри), клиенту как правило достаточно забиндить порт и сделать IP_ADD_MEMBERSHIP, дабы присоединиться к группе получателей, а сервер не тратит ресурсов на каждого клиента. Идеальное решение для своих сетей.

PNA (PNM) — один из первых протоколов, который использовался в RealMedia/RealVideo/RealAudio, проприетарщина. Если кто помнит, то RealNetworks были пионерами интернет-вещания. Не путать с протоколом People Near Me от небольшой конторки из Редмонда. Протокол почти нигде уже не используется, но можно нагулить немного исходников по 3eac2411-83d5-11d2-f3ea-d7c3a51aa8b0

MMS — творчество небольшой конторки из Редмонда, специально под Windows Media, проприетарщина, но есть спецификации.

RTP — Real-time Transport Protocol, определяет стандартизированный формат пакетов, внутри которых располагается медийная информация. Используется как транспорт для SIP, Jingle, RTSP.

RTSP — разработка Multiparty Multimedia Session Control Working Group (MMUSIC WG) из всем известного Internet Engineering Task Force (IETF). Как правило использует RTP — непосредственно транспорт, который несет данные.

RTMP — протокол от покойной Macromedia, проприетарщина (имеет официальные спецификации, в которых много чего не отражено), позволяет в реальном времени передавать звук/видео/картинки/различные структуры данных, сделано специально для Flash. Умеет http-туннели.

RTMFP — попытка запихать p2p во Flash, клиенты присоединяются к группе получателей и этого достаточно для начала проигрывания мультимедии.

Torrent — известный протокол для p2p-передачи данных. Обычно в торрентах используется механизм хеширования всех данных (sha1) для предотвращения искажений, однако при живой трансляции данные еще неизвестны, поэтому хеши заменяются открытым ключем источника. К примеру, используется в SwarmPlayer. Клиенты могут переключаться на http, если в торренте указаны дополнительные источники.

HTTP — протокол передачи гипертекста, над которым мы издевались в прошлой части. В свою очередь над ним поиздевались и другие, изобретя: HSS (http smooth streaming) — творение фирмы из Редмонда для SilverLight. HDS (http dynamic streaming) — от авторов фотошопа для Flash. HLS (http live streaming) — творение фирмы из Купертино, для устройств с закругленными уголками. Теперь и со вкусом Андроида. DASH (dynamic adaptive streaming over http) — творчество людей из MPEG Все эти протоколы объединяет работа с обычным http, который можно проксировать или раздавать через CDN, который не создает проблем с фаерволами так как запросы идут через 80 порт. Во всех четырех вариантах используется нарезка потока на множество мелких файликов и генерация манифеста/плейлиста для них. От клиента сначала приходит запрос манифеста (M3U-плейлиста в случае HLS) и дальнейшее обращение к нарезанным файлам. Клиент может свободно выбирать нужный ему битрейт, в том числе во время проигрывания, избегать рассинхронизации и кешировать это все по своему желанию. Но хотя идеи очень похожи, реализация отличается достаточно сильно.

Есть и другие подвиды http-стриминга: HPS (http progressive streaming, progressive download) — простое скачивание «бесконечного» файла и незамедлительное проигрывание, был в прошлой части. Используется к примеру на YouTube. multipart/x-mixed-replace — такое отдают многие вебкамеры с mjpeg на борту. Windows Media HTTP Streaming Protocol — тоже HTTP, но с кучей своих заголовков и запросов, как наследие MMS ICY — рассматривался в прошлой части, http с дополнительными заголовками и метаданными в ответе. Ultravox (более известен unsv:// префиксом) — продолжение ICY Ultravox 2.1 — сделали почти честное http в плане заголовков, дальнейшая реинкарнация ICY, впервые доступны спецификации.

Транскрипт

1 RadioBOSS Radio Automation Software Руководство пользователя (c) DJSoft.Net,

3 Contents 3 Содержание Часть I Введение 6 Часть II Регистрация 8 Часть III Начало работы 10 1 Настройка... прослушки (PFL) 14 Часть IV Работа с программой 16 1 Вещание... в интернет 17 Получение статистики Планировщик Задания Настройки... задания 27 Запуск заданий... по метке DTMF 29 Команды Генератор... плейлистов 35 Категории Общие Треки Фильтр Приоритет Не пов торять Настройки Автоматическое... создание плейлиста 48 Создание нескольких... плейлистов 51 Параметры командной... строки 53 4 Редактор... кроссфейдов и Параметры трека 55 Редактор кроссфейдов Параметры трека Использование... микрофона 57 6 Использование... линейного входа 57 7 Интернет-потоки... и подкасты 58 8 Карт-машина Использование... различных типов файлов Использование... функции Track list Музыкальная... база Кроссфейды Голосовые... треки Генератор... отчетов Менеджер... рекламы 75 3

4 4 RadioBOSS Help System 16 Редактирование... тегов Конвертер,... CD граббер DSP менеджер Запись... эфира Виртуальные... звуковые карты Удаленное... управление через API Контроль... доступа для пользователей Дополнительные... функции 89 Автоматическое... объявление времени 89 Автоматическое... объявление погоды 90 Система запроса... песен 92 Очередь воспроизведения Техническая... информация 93 Переменные... для форматирования строки названия трека 93 Часть V Настройки 95 1 Общие Типы... файлов 98 3 Воспроизведение Разное Фейды Микрофон/лин.... вход Вид Стиль Детектор... тишины Вещание Метаданные Отчеты Уведомления Видео Управление DTMF API Планировщик Часть VI Интерфейс Меню Файл Правка Вид Плейлист Инструменты Дж инглы Настройки Справка

6 Часть I

8 Часть II

10 Часть III

12 12 RadioBOSS Help System Доступные команды: RadioBOSS поддерживает работу с несколькими плейлистами. Нажмите на кнопку "+" чтобы добавить плейлисты если нужно. Также можно добавить Карт-машину или Web-браузер. 4. Назначение дж инглов быстрого доступа. В меню выберите Дж инглы->назначить. Джинглы можно запустить нажатием кнопок 1-9 на клавиатуре. 5. Кроссфейды: В панели управления, выберите Кроссфейды, выставите желаемые значения.

14 14 RadioBOSS Help System 7. Вещание в интернет. Если вы создаете интернет-радиостанцию, нужно сделать соответствующие настройки. RadioBOSS поддерживает ShoutCast, IceCast, Windows Media Server. Также есть встроенный сервер вещания. Это работает без дополнительных плагинов. Раздел Вещание в интернет описывает процесс настройки. 8. После того, как все настроено, запустите трек в плейлисте двойным кликом мыши! Дополнительно: Вещание в интернет Создание музыкальной базы Генерация плейлистов 3.1 Настройка прослушки (PFL) Прослушка позволяет прослушать треки вне основного эфира, на отдельном звуковом устройстве. Прослушка используется в плейлисте (нажатием правой кнопкой мыши на треке), музыкальной базе а также в Track Tool, редакторе кроссфейдов и записи голосовых треков. Для настройки прослушки, в настройках программы в разделе Воспроизведение для карты Предпрослушка (PFL) выберите устройство, через которое вы будете прослушивать треки вне основного эфира.

16 Часть IV

18 18 RadioBOSS Help System Рекомендуем использовать Мастер настройки для облегчения процесса настройки. Адрес сервера и пароль - эти параметры передаются вам хостинг-сервисом (или введите свои параметры если используется собственный сервер). Если у вас нет радио хостинга, то можете приобрести его на сайте: https://www.radioboss.fm/ru/ Частота, Формат, Битрейт и Каналы - устанавливают формат вещания. На вкладке Информация можно изменить данные станции конкретно для этого подключения. На вкладке Метаданные можно выбрать параметры отправления названия трека на сервер. Вкладка Статистика позволяет изменить способ получения статистики (данных о количестве слушателей) для сервера, подробнее о настройке. После того, как все настройки введены, нажмите ОК. Подключение будет добавлено в список. 5. В разделе Вещание установите "галочки" напротив серверов, которые вы хотите использовать. Также установите опцию "Включить вещание", расположенную вверху окна.

20 20 RadioBOSS Help System Наиболее часто встречающиеся сообщения об ошибках: Cannot start broadcasting (output N): Error 2100 Неправильные имя пользователя или пароль - проверьте эти данные. Cannot start broadcasting (output N): Error 2 Не удалось подключиться к серверу - проверьте, правильно ли введен адрес, порт. Также проверьте, что антивирус или файрвол не блокируют соединение. После того, как всё правильно настроено, RadioBOSS будет передавать все, что играет в программе на сервер вещания. Cannot start broadcasting (output N): Error -1 Обычно эта ошибка появляется если кто-то другой уже подключен к серверу (*) Настройки Источник позволяет выбрать источник сигнала, который будет передаваться на сервера Audio mix По умолчанию. Все, что играет в программе, будет передаваться на сервера вещания. Input 1 Input 2 Один из линейных входов можно выступать источником. Настройки линейных входов. Дополнительно: Создание музыкальной базы Генерация плейлиста

22 RadioBOSS Help System Планировщик Планировщик позволяет автоматически запускать файлы, плейлисты и интернет-потоки (URL) по расписанию. Это может быть использовано, например, для вывода рекламных сообщений, ретрансляции, выпуска часовых отбивок. Также в планировщике могут быть использованы команды (например, взять случайный плейлист из папки, изменить громкость, создать плейлист и прочее). Большинство команд может быть назначено с помощью Мастера. Для создания заданий: 1. В Панели управления, выберите вкладку Планировщик. Будет открыт список имеющихся заданий и функции управления:

24 24 RadioBOSS Help System 4. Установите время и дату запуска задания. Дополнительно можно установить повторение задания, выбрать дни недели, выбрать дату окончания задания. В правой части окна расположены дополнительные опции запуска. 5. Нажмите OK для создания задания. Задание появится в списке заданий. Если активирована опция Manual, то задания будут во включенном режиме, но запускаться будут только вручную (кнопкой Запустить). Команды makelibrary; createbackup; download будут запускаться в любом случае. См. такж е: Планировщик Настройки задания Задания Задания Имя файла трека/плейлиста или команда - плейлист, трек, URL или команда для запуска. Мастер может быть использован для облегчения настройки.

26 26 RadioBOSS Help System Учитывать дату - если установлен, то трек будет запущен только в тот день, который установлен в поле "Дата", иначе будет запускаться только в указанные дни недели. Дни недели - отметьте дни недели, когда трек должен запускаться. Позволяет задавать расписание сразу на всю неделю. Рядом с полем для ввода даты расположена кнопка, при нажатии на которую можно выбрать опцию "Каж дый год", тогда задание будет запускаться в указанный день каждый год. Weeks: задает номер дня недели в месяце, в который должно выходить задание. Например, если включены "2nd" и "Last", а в Дни недели выбрано воскресенье, то задание выйдет во второе и последнее воскресенье месяца. Часы - вместо указания времени, можно выбрать часы и минуты, по которым будет запускаться задание. Для настройки нажмите кнопку [...]. Если установлена Дата и опция Дни недели выключена, задание будет выполнено только в указанную дату. Если установлены обе опции Дата и Дни недели, в этом случае дата устанавливает дату начала выхода задания, после которой оно будет выходить в выбранные Дни недели, даже после указанной даты. Задания могут быть также запущены по DTMF метке. Повторы Повтоярть каж дые [X] минут не более [Y] раз - задание будет запущено Y раз через равные промежутки времени Х. Например: "Повторять каждые 15 минут не более 10 раз", в этом случае задание будет запущено в установленное время (например, 01:05), затем еще 9 раз через каждые следующие 15 минут (т.е. в 01:20, 01:35, 01:50,...). Предупреждающий значок появится, если повторения превысят 24 часа (которые впоследствии могут привести к ненужным событиям запуска). Окончание Позволяет выключить или удалить задание в указанное время. Ожидание Максимальное время ож идания в очереди - укажите время ожидания в минутах. Если воспроизведение не начинается в течение указанного времени, будет выполнено действие: Удалить - треки будут удалены из очереди. Запустить - треки будут запущены. Данная опция также может использоваться вместе с опцией Запускать поверх эфира, в этом случае, запуск поверх эфира будет отложен до конца текущего трека. Если до конца текущего трека осталось больше времени, чем установленное время ожидания, и действие по окончанию ожидания - Запустить, то ожидание выполнено не будет, а событие будет запущено сразу. Опции См. Опции задания.

28 28 RadioBOSS Help System Вставить как обычные треки плейлиста Обычно треки. запущенные по расписанию, автоматически удаляются из плейлиста. Включение опции позволяет избежать этого. Также, есть некоторые "побочные эффекты", которые могут быть полезны в некоторых ситуациях: Треки не будут помечены значком "часов", вместо этого треки будут с обычными значками Некоторые опции не будут воспринимать эти треки как треки расписания: * Если в плейлисте есть треки из расписания, поставить в очередь * Удалять предыдущее расписание из плейлиста Играть поверх эфира Если установлен, то трек будет запущен поверх основного эфира. При этом имеется возможность понизить громкость эфира регулятором "уровень музыки", который расположен ниже. Например, трек Don't Stop (см. скриншот ниже) играет поверх основного эфира. Пока играет задание поставить плейлист на паузу Поставить плейлист на паузу, запустить задание, снять с паузы.

30 30 RadioBOSS Help System можно изменить на вкладке DTMF в настройках. Например, если задание должно начаться в 01:00:00, то детектор DTMF будет работать с 00:55:00 до 01:05:00. Если сигнал DTMF не будет обнаружен в этот промежуток времени, то задание будет запущено в конце отслеживания DTMF - в данном примере в 01:05:00. Во избежание этого, включите опцию Только DTMF. В этом случае задания будут запускаться только по сигналу DTMF. Если метки не было, то задание запущено по времени не будет. Для завершения задания по метке DTMF включите опцию Вылет DTMF и введите последовательность. Несколько DTMF меток могут быть указаны для начала и окончания DTMF, например, 764C, 1D56 задание может быть начато одним из двух тонов 764C или 1D Команды Список доступных команд планировщика. Информация: в окне задания есть кнопка Мастера, с помощью которой большинство команд не нужно вводить вручную. play X запустить трек номер х в плейлисте stop остановить воспроизведение next перейти к следующему треку prev перейти к предыдущему треку run filename parameters Запустить любую программу или.bat файл Пример: run C:\dosomething.bat run C:\AnyProgram.exe -switch1 -switch2 generate preset_name generate [pro] preset_name сгенерировать плейлист используя пресет preset_name, сохраненный в генераторе. Например, в генераторе создан пресет под названием "ROCK 2 Hours" (без кавычек), чтобы по расписанию создать плейлист по этому шаблону, используется команда generate Rock 2 hours setvol x установить громкость эфира в x (от 0 до 100). Например, setvol 70. Также, можно указать период, в течение которого будет меняться громкость (в миллисекундах, 1000мс = 1сек), например, setvol изменит уровень громкости до 70 в течение 0.5 секунды load filename загрузка файла filename. Это может быть профиль (.prf), плейлист (.m3u) или список заданий планировщика (.sdl). Если не указано полное имя файла, то профиль ищется в папке \Profile, плейлист в папке \Playlist, файл расписания в папке \Presets\Schedule. Плейлисты загружаются в список Main load text ZN:Name; filename text Загрузить текст во вкладку с блокнотом. ZN: - номер зоны (Z2, Z3) Name - название вкладки

32 32 RadioBOSS Help System makelibrary my.xml C:\Music Пример 2: аналогичен Примеру 1, но добавляет треки из двух папок: C:\Music и D:\MoreMusic: makelibrary my.xml C:\Music D:\MoreMusic Пример 3: используется полный путь к.xml файлу базы makelibrary "C:\path to save\my.xml" C:\Music Пример 4: Использование плейлиста в качестве источника треков makelibrary my.xml C:\playlist.m3u8 Внимание! Если имя файла или плейлиста содержит пробелы, то имя нужно заключить в кавычки. Пример: makelibrary "Muzica Italiana.xml" "D:\Muzic\Music Italia" adsupdate Обновить задания и плейлисты из рекламного планировщика. Выполнение этой команды аналогично нажатию кнопки "Создать задания и плейлисты" в рекламном планировщике. createbackup FileName Создать резервную копию насторек и заданий планировщика. Пример: createbackup C:\RB_backup.7z createbackup C:\RB_Backup_?yyyy-?mm-?dd.7z Во втором примере используется макрозамена. download URL FILENAME Скачать файл с интернета и сохранить как FILENAME. Если не указывать имя файла, то программа просто обратится к заданному URL ничего не сохраняя - это можно использовать для отправки уведомлений. Пример: download D: \savedfile.ext folder_path folder_path/ Добавить треки из папки в плейлист. Если в конце пути добавить слеш "/", то файлы будут добавлены в случайном порядке, иначе - в алфавитном порядке. Пример: D:\Music или D:\Music\ - добавить треки из папки D:\Music folder в алфавитном порядке D:\Music/ - добавить треки из папки D:\Music в случайном порядке download [podcast] URL FILENAME Скачать файл с интернета и сохранить как FILENAME. Чтобы запустить определенный URL без сохранения какихлибо файлов, опустите параметр FILENAME (это можно использовать для отправки уведомлений).

34 34 RadioBOSS Help System Для более подробной информации: Вещание интернет радио Пример: setencodersource 0 silencedetector on silencedetector off Включить и выключить детектор тишины silencedetector on - включить silencedetector off - выключить Команда может также использоваться для изменения параметров: silencedetector timeout N - изменить время срабатывания (в секундах) silencedetector playlist FILENAME - изменить имя файла плейлиста, запускаемого при обнаружении тишины getfile C:\path_to_folder [/ random /newest /oldest] / delete Команда добавляет один файл (трек или плейлист) из папки в плейлист. Команда может выбрать самый старый или самый новый (по дате добавления) файл или же случайный файл. Синтаксис: getfile C:\path_to_folder [/random /newest /oldest] [/delete] Если путь к папке содержит пробелы, его нужно заключить в кавычки. /random - выбрать случайный трек /newest - выбрать самый новый трек из папки /oldest - выбрать самый старый трек из папки /delete - удалить файл после воспроизведения Например: играть один файл из папки обьявлений и удалить его после воспроизведения: getfile C:\announcements /newest /delete Параметр удаления можно опустить, если вы не хотите, чтобы файл удалялся после воспроизведения. playrequestedsong playrequestedsong N Запустить один из запрошенных пользователями треков. Вы также можете указать минимальный интервал времени, который должен пройти между запросом и постановкой песни в эфир. Например, playrequestedsong 30 - задержать воспроизведение запрошенного трека на 30 минут. Рекомендуется поставить задание с этой командой на повтор, например, каждые 10 минут в течение периода, когда вы хотите принимать заказы песен. См. также команды API: songrequest, songrequestclear

36 36 RadioBOSS Help System Категория состоит из треков, которые будут использованы в плейлисте. Пример: Создадим плейлист продолжительностью 8 часов со следующим составом: Top100 Station ID Music Station ID Music Station ID Как нетрудно заметить, у нас всего 3 типа треков. Поэтому создадим 3 категории треков: Station ID, Top100, и Music. Для создания категории щелкните по кнопке «+» под списком категорий. Появится окно с настройками категории: На вкладке Общие введите название категории (она будет показана в списке под этим названием, например: «Music»), длительность (в примере выше это 1 трек). На вкладке Треки выберите источник треков для данной категории. Это может быть плейлист, папка, музыкальная база или отдельный трек. Из указанного источника будет взято нужное количество треков. Для категории Station ID рекомендуется включить опцию «Игнорировать опции "не повторять исполнителя/трек"» на вкладке Не повторять. Данная опция рекомендуется для джинглов, вставок с информацией о станции и немузыкальных треков. Щелкните по кнопке OK.

38 38 RadioBOSS Help System Est. duration - показывает время одного цикла ротации. Total playlist length - показывает общее заданное время проигрывания плейлиста. Чтобы повысить качество плейлиста, на вкладке Настройки можно задать разные правила запрета повтора. Опции создания плейлиста можно сохранить для последующего использования (кнопка «Сохранить пресет» в верхней части окна). Чтобы переименовать пресет, нажмите правой кнопкой мыши на название пресета. Сохраненный пресет можно использовать, например, для запланированного автоматического создания плейлистов. Для создания плейлиста щелкните по кнопке «Генерировать». Откроется вкладка «Отчет», где можно просмотреть ход создания плейлиста, ошибки и результирующую длительность. Плейлист можно сразу загрузить в программу RadioBOSS, щелкнув по кнопке «Отправить в плеер». Для сохранения созданного плейлиста в файл щелкните по кнопке «Сохранить плейлист». Вы можете создавать несколько плейлистов сразу. Для этого нажмите на стрелку рядом с кнопкой Генерировать - Создать несколько плейлистов... Подробнее о создании нескольких плейлистов. См. такж е Параметры командной строки Настройки

40 RadioBOSS Help System Общие Название - название категории, которая будет показана в списке под этим названием - например, "Music". Длительность - количество треков или минут, которое будет браться из категории при каждом цикле ротации. Использовать все треки из источника - каждый раз будут использованы все треки источника. Использовать только один раз - данная категория будет использована только один раз (при первом цикле ротации). Концовка: добавить только в конец плейлиста - добавить созданную категорию только в самый конец плейлиста.

Источники