Producing Live Stream.
Ця невеличка сторінка можливо кому-небудь допоможе зробити собі сервіс, яким можна поширювати свій LiveStream у інтернеті та на телебаченні. Таких відео-сервісів зараз у світі вже безліч (ось перелік найбільш великих у світі), але вони поширюються і поширюється, навіть я нещодавно зробив такий Проєкт Desen.BG.
WebCam vs IpCam
Для тих, хто вперше чує слова LiveStream по-перше треба з'ясувати різницю між USB-камерою та IP-камерою. USB-камера взагалі не має ніякого IP-протоколу. Вона виробляє серію малюнків у форматі JPEG, які потім драйвер, встановлений на комп'ютері за допомогою кодека переробляє на стрім, який вже потім відправляється у IP-мережу по якому-небудь протоколу. Ось тут, наприклад, е інструкція, як зробити власну прогу, яка буде кодувати стрім з USB WebCamera на стрим по IP-протоколу Н264. Сам по собі цей протокол у IP-мережі взагалі може бути який завгодно нестандартний, і достатньо часто у Системах відеоспостереження використовуються якісь нестандартні протоколи. А наприклад ось тут Этюды на ASP NET2. Наблюдаем за своим домом с работы у мене описана IP-камера, яка дозволяє звертатися до неї своїм власним кодом і вичитувати з неї світлини у форматі JPEG. Але більшість сучасних камер дозволяє звертатися до них по сучаснім протоколам, таким як RTP/RTSP.
Крім власної проги кодека у H264 або RTMP, яку можна швиденько зробити самому, існує декілька усім відомих стандартних інструментів, що дозволяють сформувати на комп'ютері под Windows стандартний RTSP-стрім, в першу чергу це Flash Media Live Encoder, на платформі Android це в першу чергу OS Broadcaster. Якщо ви встановите на свій комп'ютер Google Hangouts то ви отримаєте те ж саме, що від OS Broadcaster або Flash Media Live Encoder - тільки не до стандартного серверу, що працює по RTSP, а до специфічного мультикаст стрім-серверу Youtube.
Щоб ви ще краще це зрозуміли - комп'ютер + USB-камера + (Google Hangouts / Flash Media Live Encoder / OS Broadcaster) це і є IP-камера, що публікує Live Stream по протоколу RTP/RTSP або RTMP або VP8/WEBM. Більшість сучасних IP-камер передає відео наживо у стандарті H264/AAC, у якому взагалі може транслюватися LiveStream по протоколам RTSP/RTP або RTMP (а також не пов'язаний з LiveSteam формат MPEG-TS).
LiveStream Protocols
Важливо зрозуміти ці три альтернативних засобу кодування Live Stream:
- VP8 & WEBM від Google. Цей формат новий та найменш поширений.
- RTSP - це проколол передачі відео точка-точка, на відміну від HTTP він має стан, наприклад зараз передача відео знаходиться у стані STOP. Цей протокол використовує протокол RTP як траспорт, тобто RTSP описую старт/стоп передачі Real-time даних по протоколу RTP. Звичайний порт TCP для протоколу RTSP - 554, безпосередньо RTSP завжди використовує Apple Quicktime.
- RTMP - це специфічна реалізація LiveStream протоколу від компанії Adobe, по якому працює Flash-плеер, звичайно використовуючи TCP порт 1935. По протоколу RSTP/RTP приймають відео STB-блоки телеприймачів, а на Windows-комп'ютері можна прийняти за допомогою VLC media player будь який стрім по протоколу RTSP або RTMP (Media->OpenURL).
Stream Server
Щоб зробити своїм користувачам Real-time трансляцію (LiveStream-трансляцію, трансляції наживо) однієї IP-камери недостатньо, бо вона працює лише як точка-точка, тобто один передавач-один приймач. Але для того, щоб зробити Multicast-трансляцію потрібен стрім-сервер, який уміє розсилати відео по будь яким стандартнім протоколам (якими користуються на різних платформах STB для IPTV, Android, Windows, Linux, найрізноманітніші комунікатори) одночасно тисячам адресатів.
Є декілька всім відомих серверів, наприклад наприкінці цієй сторінці Видео-камеры, видео-чаты и Flash-медиасервера (работающие по RTMP и самописным протоколам) є скріни Flash Media Server, з яким я колись працював. Інший відомий сервер - це безкоштовний RED5, або ще більш популярний платний сервер WOWZA (коштує біля 50 евро на місяць). Ось тут знаходиться загальний бриф можливостей стрим-серверу WOWZA. Існує також декілька інших, майже невідомих, безкоштовних стрім-серверів, наприклад Nimble Streamer.
CDN
Для прискорення доставки Video можна використовувати або специфічні мережі доставки відео контенту, наприклад Wowza Streaming Cloud, або встановлювати власні сервера, які приймають сигнал від корневого серверу і розповсюджують його далі. Якщо вам потрібно прискорити роздачу власного відео і зробити власну мережу серверів, почніть занурюватися у цю тему зі статті - How to use CDNs and services to distribute live streams (push publishing). Найбільш відомі мережі Akamai, CDNetworks, Amazon CloudFront, Edgecast, Limelight. Але будьте обережні, за багатьма файними словами та малюнками часто приховується звичайне шахрайство. Наприклад, компанія Amazon продає скромну надбудову над FFMPEG за величезні гроші, які потрібно платити за кожний байт, кожну хвилинку. Навіть я писав на скору руку набагато більші надбудови, писав їх просто так, між іншими прогами, навіть не звертаючи увагу на ті надбудови - Опыт видео-конвертации. А компанія Амазон зробила с подібної надбудови бізнес на мільярди доларів. Тому треба дуже уважно дивитися, що вам намагаються продати.
Own Server vs External service
Якщо не користуватися своїм власним сервером (на якому встановлена програма WOWZA або RED5), то можна скористуватися послугами сторонніх сайтів, які надають через WEB послуги своїх стрім-серверів. Це може бути як безкоштовний сайт (Youtube), так і три найбільших його платних конкурента:
Недоліки чужого стрім-серверу відомі усім - прокрутка чужої рекрами на вашому контенті, величезна цена (бо це найбільш рентабельний інтернет-бізнес), відсутність API для зовнішнього програмного контролю серверу, постійна модерація вашого контенту незрозуміло ким, можливість повного бану, якісь постійні проблеми щодо незрозуміло чиїх авторських прав, та можливість повного видалення вашого контенту назавжди незрозуміло за що. Тому мій особистий вибір у моїх проєктах - це встановлювати власний WOWZA-сервер.
Players
Щоб програвати LiveStream на Flash-платформі використовується плеер на базі, описанного мною тут - RTMP Player. Але Flash-платформа і компанія Adobe (яка взагалі зараз є власником технології Flash і яка проковтнула компанію-девелопера усього інтернет-мультімедіа - компанію Macromedia) є конкурентами інших гравців за наші гроші. Тому всі, кто можливо, намагаються заблокувати Flash-платформу і компанію Adobe, як найбільш поширену платформу - та нам продавати нам щось свое. Ось на цій сторінці розказано про п'ять комерційних плеєрів. Плеєри та браузери, що працюють напрямки з LiveStream показані на третьому малюнку. А на другому малюнку показані плеєри та браузери, які можуть працювати з LiveStream після того, як він буде перекодованим на стрім-сервері.
|