УДК 004.057.5
ONLINE-STREAMING INTEGRATION FOR MODERN
BROWSERS
Kruchinin Sergei Vladimirovich, Wellborn LLC., Voronezh, Russia
Abstract. The author analyzes the transition from the use of Adobe Flash to HTML5 in the implementation of audio and video streaming. The author analyzes the situation in the sector of modern web development. The author proposes the use of audiostreaming for the implementation of web conferences and lectures. Butt-0.1.13 (broadcast using this tool) is selected among the broadcast programs (from the list of Sam Broadcaster Pro, RadioBoss and butt-0.1.13) because of the minimalistic design and functionality. The Google Chrome is selected for testing from the list of modern browsers (Internet Explorer, Mozilla Firefox, Opera, Safari, Google Chrome), as supports both mp3 and ogg. The author studied the latency in broadcasting with the usage of butt-0.1.13 and icecast2 for example mp3 format and browser Goggle Chrome. We have proposed the implementation of the conference using icecast2, liquidsoap (on the server side), butt-0.1.13 (on the lecturer side) and any browser as a client, without having to install Adobe Flash Player, in any of the internet browsers, i.e. providing complete platform-independent broadcasting.
Keywords: adobe flash, html5, streaming, icecast2, latency, задержка в вещании, google chrome, samplerate, bitrate, butt.
ИНТЕГРАЦИЯ ОНЛАЙН-ТРАНСЛЯЦИИ В СОВРЕМЕННЫЕ
БРАУЗЕРЫ
Кручинин Сергей Владимирович, кандидат политических наук, ООО «ВЭЛБОРН»,
г. Воронеж
Аннотация. Автор дает анализ перспектив перехода от Adobe Flash к использованию HTML5 в реализации аудио- и видео- стриминга. Анализируется ситуация, сложившаяся в современной отрасли веб-разработки. Предложено использование аудио-стриминга для реализации веб-конференций и лекций. Среди программ для вещания из перечня Sam Broadcaster Pro, RadioBoss и butt-0.1.13 (broadcast using this tool) выбран butt-0.1.13 благодаря минималистичному дизайну и функциональности. Для тестирования из современных браузеров (Internet Explorer, Mozilla Firefox, Opera, Safari, Google Chrome) выбран Google Chrome, как поддерживающий одновременно форматы mp3 и ogg. Изучена задержка (latency) в вещании с помощью butt-0.1.13 и icecast2 на пример формата mp3 и браузера Goggle Chrome. Сделано предположение, что можно реализовать конференцию с использованием icecast2 и liquidsoap на серверной стороне, butt-0.1.13 на стороне лектора и любого браузера в качестве клиента, без установки Adobe Flash Player, в любом из интернет-браузеров, т.е. обеспечивается полная платформа-независимость вещания.
Ключевые слова: adobe flash player, html5/css3, icecast, онлайн-стриминг, задержка в вещании, браузеры, частота дискретизации, битрейт, butt-0.1.13.
Актуальность. В настоящее время набирает популярность технология, получившая наименование HTML5, в результате чего идет медленный, но все более обретающий популярность процесс отказа от технологии Flash. Этому способствуют стандартизация в HTML5 тегов audio и video, развитие иных стандартов, таких как WebRTC, в перспективе позволяющих создавать системы онлайн-общения и он-лайн-трансляций используя браузер. Мы рассмотрим в данной статье некоторые проблемы построения аудио-трансляции в веб-браузере, с учетом того, что процесс перехода от Adobe Flash к HTML5 все еще не завершен и находящийся в стадии формирования.
До последнего времени стандартом вещания де факто были технология Adobe Flash и связанный с ней протокол RTP. Мы рассмотрим некоторые тенденции в формировании технологий вещания в HTML5 без использования Adobe Flash.
Постановка проблемы. Неудобство использования Adobe Flash Player заключается как в отсутствии его поддержки отдельными устройствами (iOS на мобильных устройствах, android), так и невозможности его работы при специфических настройках безопасности, необходимость устанавливать его дополнительно (для большинства браузеров, кроме Google Chrome, где этот модуль является встроенным). Реализация аудио- и видео- трансляций, без задержек с приемлемым качеством в HTML5 позволило бы сделать трансляции доступными и удобными для пользователей и платформа-независимыми.
Отдача видеопотока возможна для мобильных устройства на iOS (устройства iPad и iPhone), а также Android (последних версий) можно использовать протокол HLS (HTTP Live Streaming) [1]. Этот протокол, разработанный в Apple, представляет собой «нарезанный» на куски MPEG-TS/H264/AAC поток, отдаваемый по HTTP [1]. Для вещания на стационарных компьютерах и ноутбуках, взамен технологии Adobe Flash подойдет аналогичная технологии HLS технология MPEG-DASH. Поток представлен в виде небольших по длительности фрагментов и плэйлиста (манифеста), содержащего метаданные потока и ссылки на фрагменты. В MPEG-DASH фрагменты могут иметь как формат MPEG-TS, так и ISO BMFF (т.е. mp4) [2]. На наш взгляд, это перспективная технология, описанная в статьях Романа Арутюняна [1; 2], а кроме того, собственно, как и отмечает сам автор, «тяжелые» многопоточные FMS, Wowza и Red5 проигрывают по числу по числу одновременно подсоединенных клиентов и нагрузке на CPU [1].
Теперь остановимся на вещании аудио-потока. Технология давно используется для организации онлайн-радио, поток передается по протоколу HTTP в формате mp3 или ogg. В качестве сервера может использоваться, например, icecast2, а в качестве клиента, любой из современных браузеров, поддерживающих mp3 или ogg формат, следовательно, все популярные ныне браузеры. На наш взгляд данную технологию можно использовать и для веб-конференций и лекций, для чего следует добиться минимальной задержки в вещании (latency), изучению которой и посвящена данная статья.
Инструменты и методы. Мы будем использовать форматы/кодеки MPEG 2 Audio Level III (mp3) и ogg/vorbis с оценкой времени задержки (latency) между отправкой сигнала и его получением, а также качества и разборчивости переданной речи. Для реализации системы вещания мы будем использовать сервер icecast2, в качестве клиента браузер Google Chrome. Для захвата и отправки аудио на сервер - программу butt-0.1.13 [5]. Для оценки задержки будем использовать секундомер [4]. Технология тестирования схожа с изложенной в [3] но в отсутствие запрограммированного специально для этих целей инструментария будет проходить вручную. Погрешность менее секунды, которая может образоваться из-за субъективной оценки и неточности, для нас будет не существенна из-за значительной разницы в формируемой задержки в зависимости от применяемого битрейта/частоты дискретизации.
Выбор браузера Google Chrome обусловлен тем, что на данный момент мы будем использовать сервер icecast2 без перекодирования аудио-потоков с помощью Liquidsoap, потому браузер Google Chrome подойдет как браузер, поддерживающий одновременно вещание в фо-рамтах и mp3 и ogg (см. таблица 1)
Таблица 1. Поддержка форматов в теге audio современными браузерами (на основе [6]).
MP3 OGG AAC WebM
Google Chrome + + + +
Mozilla FireFox - + — +
Opera — + — +
Safari + — + —
Internet Expolorer + — + —
Для выбора программного обеспечения для захвата речи с микрофона и отправки в icecast2 мы рассматривали SAM Broadcaster PRO,
RadioBOSS и Butt-0.1.13 («Broadcast using this tool») [5]. Наш выбор остановился на последнем, благодаря минималистичному дизайну и достаточной функциональности, вкупе с удачным юзабилити. Захват звука браузером и вещанием через него мы пока не рассматривали, по причине того, что технология WebRTC не в достаточной мере стандартизирована, рассчитана на несколько другой вариант применения (конференции P2P), а для не поддерживающих ее браузеров все также требуется Adobe Flash Player. Butt-0.1.13 [5] поддерживает потоки в формате mp3 и ogg, таким образом тестирование будет проводится в связке butt-0.1.13 + icecast2 + Google Chrome.
Скорость подключения к сети Интернет на клиентском компьютере - 2 Мбит/c, ping до сервера в среднем 16 мс.
Гипотеза. Мы предполагаем, что онлайн-вещание можно реализовать, отказавшись от RTP и Flash Player с использованием HTML5, тегов audio и video. Решение для видео-стриминга изложено в [1;2] мы же остановимся на построении простейшего аудио-стриминга, пригодного для проведения веб-конференций и лекций с одним ведущим.
Проведение исследования.
Программное обеспечение icecast2 установлено на виртуальном сервере VPS. Использовался виртуальный VPS со следующими характеристиками (10Гб, 400Мгц CPU, 512Мб RAM, UBUNTU)
Фрагмент файла конфигурации icecast2.xml
<limits>
<clients>10 0</clients> <sources>2</sources> <threadpool>18</threadpool> <queue-size>52 42 88</queue-size> <source-timeout>3</source-timeout> <burst-on-connect>0</burst-on-connect> <burst-size>64</burst-size> </limits>
Эксперимент заключается в выборе в butt необходимых сочетаний кодек/частота/битрейт, и замером с помощью секундомера времени между тем, как контрольная фраза была произнесена и затем услышана. Секундомер запускался одновременно с последним звуком произносимой контрольной фразы и останавливался с последним звуком слышимой контрольной фразой. Дополнительно использовался контроль на потери: произносилась длинная фраза и проверялась точность ее воспроизведения (отсутствие выпадений звуков и «проглатывания» слов или их частей).
Таблица 2. Пример замеров
№ кодек режим частота битрейт задержка
1 Mp3 стерео 48000Hz 320k 7 секунд
2 Mp3 моно 48000Hz 320k 6 секунд
3 OGG стерео 48000Hz 320k 5 секунд *
4 OGG моно 48000Hz 320k Недоступно**
5 Mp3 стерео 44100Hz 320k 7 секунд
6 Mp3 моно 44100Hz 320k 11 секунд
7 OGG стерео 44100Hz 320k 7 секунд*
8 OGG моно 44100Hz 320k Недоступно**
9 Mp3 стерео 32000Hz 320k 13 секунд
10 Mp3 моно 32000Hz 320k 13 секунд
11 OGG стерео 32000Hz 320k 3 секунды*
12 OGG моно 32000Hz 320k Недоступно**
Примечание: * наблюдалась потеря (выпадение) фрагментов речи, режим не позволяет осуществлять приемлемое вещание ** Butt информировал либо о невозможности работы в данном режиме, либо завершался крахом программы.
Таблица 3. Пример замеров
№ кодек режим частота битрейт задержка
1 Mp3 стерео 24000Hz 320k 9 секунд
2 Mp3 стерео 22000Hz 320k 7 секунд
3 Mp3 стерео 16000Hz 320k 13 секунд
4 Mp3 стерео 12000Hz 320k 16 секунд
5 Mp3 стерео 11025Hz 320k 16 секунд
6 Mp3 стерео 8000Hz 320k 18 секунд
7 Mp3 стерео 8000Hz 256k 17 секунд
8 Mp3 стерео 16000Hz 256k 13 секунд
9 Mp3 стерео 32000Hz 256k 8 секунд
10 Mp3 стерео 48000Hz 256k 10 секунд
11 Mp3 стерео 48000Hz 160k 7 секунд
12 Mp3 стерео 48000Hz 96k 6 секунд
13 Mp3 стерео 22050Hz 96k 6 секунд
14 Mp3 стерео 8000Hz 96k 17 секунд
15 Mp3 стерео 48000Hz 64k 8 секунд
Дополнительно отмечен тот факт, что юеса812 непрерывно был запущен на сервере, в результате вещание через некоторый промежуток времени (порядка 2-3 недель после старта) наблюдалось некорректная обработка потока браузером после запуска вещания (после нескольких секунд поток клиентом останавливался). После перезагрузки юеса§12 поток становился непрерывным.
Опытным путем установлено, что одним их самых стабильных режимов было вещание в режиме mp3/стерео/48000Гц - частота дискретизации и 320 битрейт. Задержка в этом случае составляла порядка 7 секунд, что хотя и является достаточно большой задержкой, но в тоже время, с ней можно удовлетворительно вещать.
Возможны погрешности из-за ограниченной мощности VPS, но при этом даже при указанных выше настройках получены вполне приемлемые результаты.
Выводы.
Систему простой голосовой трансляции (передача голоса), которую можно использовать в проведении конференций или лекций, можно реализовать с использованием icecast2 и butt-0.1.13. Минимальная задержка при использовании mp3 составляет в Google Chrome. Задержка незначительная и составляет порядка 7 секунд. Для использования в браузерах Mozilla FireFox и Opera необходимо также установить на сервере liquidsoap и настроить перекодировку mp3 в ogg.
Библиографический указатель:
1. Арутюнян Р. Сервер онлайн-вещаний на базе nginx /Роман Арутюнян // Хабахабр. Опубликовано 12.12.2012 [Электронный ресурс] http ://habrahabr.ru/post/162237/
2. Арутюнян Р. MPEG-DASH в nginx-rtmp-module: живое видео в браузере без флеша /Роман Арутюнян // Хабахабр. Опубликовано 3.12.2013 [Электронный ресурс] http ://habrahabr.ru/post/204666/
3. Зотов С.В. Автоматизация тестирования устройств телекоммуникаций //Научно-исследовательские публикации. 2013. № 1. С. 49-55.
4. Секундомер онлайн [Электронный ресурс] URL: http://sekundomer.net/
5. Butt (broadcast using this tool) version 0.1.13 (butt-0.1.13) // Sourceforge URL: http://sourceforge.net/projects/butt/files/butt/butt-0.1.13/
6. HTML5 audio [URL] http://dikmax.name/post/hmtl5audio/
Статья поступила в редакцию 26.09.2014г.