18 сентября 2012 года мы запустили собственную интернет трансляцию сразу нескольких новых телеканалов из разных стран мира – это и Россия, и Франция, и Великобритания, и ряд других стран (полный перечень каналов собственного интернет-вещания доступен на главной странице). Все трансляции осуществляются в прямом эфире.
Являясь ведущим разработчиком данной системы онлайн вещания, я решил написать ряд заметок, посвященных вопросам организации собственного вещания через Интернет, тем сложностям, с которыми нам пришлось столкнуться и путями их решения, а также обозначить преимущества и недостатки данной системы по сравнению как с решениями мира Open Source, так и профессиональными. Учитывая, что в свободном доступе не так много информации по данному вопросу, возможно, она окажется в чем-то полезной.
О технологии.
В качестве источника сигнала мы используем сигнал со спутниковой антенны, далее осуществляется его программное декодирование, на выходе которого получаем несжатое видео и аудио. И повторное кодирование видеокодеком H.264 и аудиокодеком AAC. Далее потоки на лету мультиплексируются в так называемые фрагментированные mp4 файлы и доставляются по HTTP протоколу зрителям. Просмотр трансляции происходит через флеш плеер.
Перечислю ключевые моменты, которые выделяют данную разработку от любых других подобных решений, как из мира Open Source, так и коммерческих:
Трансляция осуществляется по технологии адаптивного HTTP стриминга от Adobe. Вопросы, посвященные выбору формата вещания я разметил здесь – выбор формата вещания.
Используется собственный видеокодек стандарта H264, кодирующий видео в режиме реального времени. Именно им у нас производится кодирование всех видеопотоков. О том, зачем было разрабатывать свой видеокодек, и не лучше ли было бы использовать открытый видеокодек x264, читайте в заметке “выбираем видеокодек”.
Был разработан собственный упаковщик, осуществляющий мальтиплексирование аудио и видео данных в формат, аналогичный формату файлов f4f от Adobe, предназначенный для адаптивного http стриминга. О том, почему бы не использовать готовый packager читайте на странице зачем создавать свой http сервер.
Собственный http сервер онлайн вещания, осуществляющий отправку фрагментированного видео клиентам. Почему не Apache или nginx – можно прочитать там же - зачем создавать свой http сервер.
Используются собственные ретрансляторы видеопотока (как работает ретрансляция или строим свою CDN), позволяющие организовать рапределенную сеть доставки контента или топологию пиринговой сети (есть ли будущее у пирингового телевидения?) и ретранслировать любое число каналов.
Весь код написан на языке С++.
Высокая стабильность работы, отсутствие так называемых segmentation fault и утечек памяти (методика разработки).
Работа в любых, даже самых суровых условиях - при отстутсвии сигнала, его низком уровне, сбоях в работе сети. Во всех этих случаях система работает стабильно и автоматически возобновляет корректную работу, как только сигнал нормализуется, т.е. отсутствует необходимость осуществлять какой бы то ни было контроль за работой системы.
Реализована возможность одним вещателем принимать, перекодировать и транслировать в сеть любое число каналов, зависящее только от производительности сервера.
Все перечисленные характеристики позволяют поставить данную систему в один ряд с профессиональными решениями для онлайн вещания, а также использовать её телеканалами для организации собственного вещания.
В рамках данного цикла заметок я постарался затронуть практически все основные моменты, которые возникали. Исключение составляют технологии декодирования/кодирования аудио, а также работа по исправлению драйверов тюнеров для возможности одновременного приема неограниченного числа каналов. Надеюсь, в будущем я напишу об этом более подробно.
У вас возникли вопросы, замечания, или предложения? Пишите, буду рад ответить на них. Вы всегда можете связаться со мной через форму обратной связи на сайте.
Игорь, Октябрь 2012.
|
вопрос: как сохранить нужную часть видео контента из архива?
например конкретную передачу о здоровье для родителей... т.к. в силу возраста они "не дружат" с интернетом.
С уважением, Владимир.