Мне нужно транслировать несколько “каналов” (по каналам, о которых я думаю о радиоканалах, поэтому плейлисты могут быть более уместны) от MP3 файлов в очереди до 200 клиентов через Интернет с веб-сервера Windows 2008 R2/IIS 7. Шифрование потока не является обязательным требованием.
Мне нужен способ, чтобы каждый клиент мог передавать только один канал за раз. Я думал об ограничении по IP-адресу и хотел бы приветствовать любые предложения о том, как я могу это сделать, или если может быть лучший способ.
Для моих клиентов я предполагаю, что мне нужен игрок на стороне клиента, который может облегчить “вход в систему”. В идеале я мог бы передавать потоки в windows xp/7/8, mac и android.
Мне нужно было бы дистанционно войти в систему и управлять каждым каналом/списком воспроизведения из конечного списка файлов MP3, размещенных на веб-сервере.
Мне интересно, есть ли какие-либо продукты с полки, которые я мог бы использовать для этого. Если нет, я зациклился на том, что было бы лучшим способом.
Я кратко прочитал о крике, авто dj, потоке и льду, но у меня нет опыта с этими решениями, и я не могу найти никакой информации о том, как реализовать требования безопасности, которые у меня есть (ограничение доступа к одному поток на клиентский /IP-адрес).
IP-адреса не однозначно идентифицируют пользователей. Существует множество ситуаций, когда NAT вступает в игру, и вы можете иметь сотни пользователей за одним и тем же общедоступным IP-адресом.
Что вам нужно сделать, так это другой метод идентификации пользователей. Предполагая, что вы не хотите требовать учетные записи, вы можете использовать идентификатор сеанса.
В принципе, вы назначаете идентификатор cookie в браузер. Когда пользователь нажимает на ссылку для запуска своего аудиоплеера, идентификатор сеанса передается по URL-адресу в поток. С помощью этого метода не имеет значения, используется ли сам браузер или отдельный аудиоплеер для воспроизведения потока. Для потокового сервера требуется принять или отклонить запрос.
Обычно принято принимать любые новые запросы и отключать старые при запуске нового потока. Icecast не поддерживает подобные вещи, но он предоставляет API-интерфейс с интерфейсом администратора, который вы можете использовать из своих собственных скриптов, чтобы получить это поведение.
Кроме того, я написал сервер под названием AudioPump, который обеспечивает аналогичную функциональность. Он пока недоступен, но, пожалуйста, свяжитесь со мной по адресу brad@audiopump.co, если вы заинтересованы.