
Булуттагы видеокөзөмөл системасынын үстүндө иштөөнүн алгачкы күндөрүнөн тартып, биз Ivideonдан баш тартууга мүмкүн болгон көйгөйгө туш болдук - бул биздин Эверест болчу, ал көп энергияны талап кылган, бирок азыр биз акыры кайчылаш платформа баш катырмасынын чокусуна муз балта кадады.
Аудио жана видеону Интернет аркылуу берүү системасы жабдуулардан, веб-клиенттерден жана алар колдогон стандарттардан көз каранды болбошу керек, ошондой эле Network Address Translators жана Firewalls болгон учурда туура иштеши керек. Булуттагы видеокөзөмөлдүн колдонуучусу аналогдук камераларды колдонсо дагы, бул кызматка кирүүнү каалайт жана эң заманбап аппараттан түз эфирди көрүүнү артык көрөт.
Колдонуучу видеолорду минималдуу кечигүү менен көргүсү келгени абдан маанилүү. Браузерде аз күтүү менен видеону көрсөтүүнүн дээрлик жалгыз жолу - WebRTC (веб реалдуу убакыт байланышы) колдонуу. WebRTC – бул браузерлерде видео жана аудиону бирден-бирге берүү үчүн технологиялардын жыйындысы, алгач видео агымдарды аз күтүү менен өткөрүү жана ойнотуу үчүн иштелип чыккан. Бул үчүн, башка нерселер менен катар, UDP протоколу колдонулат.
Жаңы кыймылдаткыч колдонуучуга эмне берерин айтуудан мурун, биз HLS технологияларын эмне үчүн жана эмне үчүн колдой турганыбызды жана эмне үчүн улантууну чечкенибизди эскертебиз.
HLS кыймылдаткычы: жакшы жана жаман жактары

()
HLS (HTTP түз эфир) технологиясы Apple тарабынан иштелип чыккан, андыктан анын алгач Apple түзмөктөрүндө колдоого алынганы таң калыштуу эмес. Бүгүнкү күндө HLS видеосу дээрлик бардык приставкалар жана ОС иштеткен көптөгөн түзмөктөр тарабынан колдоого алынат. Android.
HLS кыймылдаткычы видео маалыматтарды агым үчүн AAC же MP264 аудио агымдары менен бирге белгилүү H3 видео кодегин колдонот. Бүт аудио жана видео маалымат агымы MPEG-TS транспорттук контейнерге топтолгон. HTTP протоколу аркылуу берүү үчүн агымдагы маалымат m3u8 ойнотмо тизмелеринде сүрөттөлгөн фрагменттерге бөлүнөт. Ошондо гана бул фрагменттер ойнотмо тизмелер менен бирге HTTP аркылуу өткөрүлөт. Анткени автоматтык түрдө секундадагы кечигүү дегенди билдирет. Бул MPEG-TS контейнеринин өзгөчөлүгү.
HLS кыймылдаткычы да multibitrate агымдарды, Live/VOD колдойт.
HLS негизги артыкчылыктары:
- бардык негизги браузерлерде камтылган колдоо;
- ишке ашыруунун жөнөкөйлүгү (WebRTC менен салыштырганда);
- Сегменттерди CDNге бир жолу жүктөө мүмкүн болгондуктан, ар кандай берүүлөрдү чоң аудиторияга уюштуруу абдан ыңгайлуу жана эффективдүү.
Мотордун жөнөкөйлүгүнө карабастан, баары көрүнгөндөй жылмакай эмес. Негизги көйгөй - үчүнчү тараптын ойноткучту иштеп чыгуучулары, мисалы, колдоого алынган аудио форматтары боюнча Apple сунуштарынан алыстап кетишкен. Атап айтканда, көптөгөн иштеп чыгуучулар популярдуу аудио агымдары менен иштөө мүмкүнчүлүгүн кошо башташты: mpeg2 видео, mpeg2 аудио ж.б. Натыйжада, алар ар кандай оюнчулар үчүн ар кандай плейлист форматтарын түзүүгө туура келди.
Бирок HLS кыймылдаткычынын эң чоң көйгөйлөрүнүн бири - бул маалыматтарды берүүдөгү жогорку кечигүү.
"тормоздун" келип чыгышы
HLSтин кечиктирилишинин негизги себеби программисттер эң жогорку сапаттагы сүрөттөрдү алуу үчүн кыймылдаткычты жаратканында. Ошондуктан, колдонулган кадр аралыгынын параметрлери жана ойнотуу буферинин өлчөмү түз видео берүүлөр үчүн жөн эле ылайыктуу эмес. Ушундан улам, 5-7 секунд болушу мүмкүн болгон видеоматериалдарды берүү бир кыйла көп кечигүү бар.
Бир жагынан алганда, бул, мисалы, видеохостинг серверинен тасма көргөндөр үчүн көп деле эмес. Бирок видеокөзөмөл системалары үчүн видеоматериалдарды берүү кечигүү абдан маанилүү болушу мүмкүн.
Эгер сиз кызматкерлер саатына бир жолу монитордон башын көтөргөн кеңсени көрүп жатсаңыз, анда 5 секунда кечигүү эч кандай мааниге ээ эмес. Бирок адамдар, мисалы, футбол матчын көрсөтүүдө чатта GOOOOL деп жазышкан, бирок бул видеодо азырынча жок деп нааразы боло башташты :). Бизде Ivideon Skype'ты иш жүзүндө алмаштыра турган бир нече колдонуучу учурлары бар.
HLSде кечиктирүүнү жеңүү мүмкүнбү? Бул суроонун жообу тажрыйбалуу келемиштерди жок кылуучунун зыянкечтерге каршы күрөш боюнча жаңы адистерге берген лекциясында сүйлөгөн сөзүндөй угулат: «Келемиштерди жок кылууга болбойт, бирок алардын санын акылга сыярлык минимумга чейин кыскартууга болот». HLS кечигүү сыяктуу эле, аны нөлгө чейин азайтуу мүмкүн эмес, бирок рынокто кечиктирүүнү кыйла азайта турган чечимдер бар.
Жакшы кесип
Кыймылдаткычтын дагы бир кемчилиги - маалыматтарды берүү үчүн кичинекей файлдарды колдонуу. Мунун эмнеси жаман экени көрүнүп турат?
Көп сандагы майда файлдарды бир алып жүрүүчүдөн экинчисине көчүрүүгө аракет кылган ар бир адам, балким, мындай топтомдун жазуу ылдамдыгы бирдей өлчөмдөгү бир чоң файлдан бир топ төмөн экенин байкаса керек. Жана катуу дискке кирүү интенсивдүүлүгү бир кыйла жогорулайт, бул жалпысынан бүт компьютердин иштешине терс таасирин тийгизет. Ошондуктан, видео маалыматтарды кичинекей 10 секунддук бөлүктөрдө берүү да кыймылдаткычтын күтүү убактысынын көбөйүшүнө өбөлгө түзөт.
Келгиле, HLS технологиясынын бардык жакшы жана жаман жактарын кыскача айтып берели.
HLS артыкчылыктары:
- Ар кандай аппарат менен иштөө мүмкүнчүлүгү. Сиз смартфон, планшет, ноутбук же рабочий компьютер болобу, каалаган заманбап түзмөктөн видеолорду көрө аласыз. Эң негизгиси, веб-браузер заманбап жана HTML5 жана Media Source Extensions менен шайкеш келет.
- Мыкты сүрөт сапаты. Колдонулган адаптивдик маалымат берүү функциясы Интернетке туташуунун өткөрүү жөндөмдүүлүгүнө жараша берилүүчү видеонун сапатын динамикалык түрдө өзгөртүүгө мүмкүндүк берет, ал эми алгоритм максималдуу сапатты сактоого умтулат.
- Колдонуучунун жабдууларын татаал конфигурациялоонун кереги жок.
кемчиликтери:
- Кээ бир түзмөктөрдө кыймылдаткыч менен иштөө үчүн чектелген колдоо.
- Сүрөт берүүнүн жогорку кечигүүлөрү.
- Кичинекей файлдарды колдонуунун эсебинен оптималдаштыруунун татаалдыгы жана кошумча чыгымдардын олуттуу өсүшү. Контейнердин табиятынан улам биз эч качан сегменттин өлчөмүнөн төмөн күтүү убактысын ала албайбыз.
HLSтин кемчиликтери биз үчүн анын артыкчылыгынан ашып түшүп, альтернативалуу варианттарды издөөгө мажбур кылды.
WebRTC деген эмне

()
WebRTC платформасы 2011-жылы Google тарабынан агымдык видео жана аудио маалыматтарды браузерлер менен мобилдик тиркемелер арасында минималдуу кечигүү менен өткөрүү үчүн иштелип чыккан. Бул үчүн стандарттык UDP протоколу жана агымды башкаруунун атайын алгоритмдери колдонулат. Бүгүнкү күндө бул ачык булак долбоору, ал Google тарабынан жигердүү колдоого алынат жана иштелип жатат.
WebRTC – бул видео жана аудиону бирден-теңге өткөрүү үчүн технологиялардын жыйындысы. Башкача айтканда, мисалы, WebRTC колдонгон колдонуучу браузерлери маалыматтарды сактоо жана иштетүү үчүн алыскы серверлерди колдонбостон, маалыматтарды бири-бирине түздөн-түз өткөрүп бере алышат. Бардык маалымат акыркы колдонуучулардын браузерлери жана мобилдик тиркемелери тарабынан да иштетилет.
Бул технологиянын ыңгайлуулугу жана кеңири мүмкүнчүлүктөрү бардык популярдуу браузерлердин иштеп чыгуучулары тарабынан жогору бааланган. WebRTC колдоосу учурда Mozilla Firefox, Opera, Google Chrome (жана бардык Chromium негизиндеги браузерлерде), ошондой эле мобилдик тиркемелерде жеткиликтүү. Android жана iOS.
Бардык талашсыз артыкчылыктарга карабастан, WebRTC бир нече олуттуу кемчиликтерге ээ.
кыйынчылык тандоо
WebRTC технологиясы P2P жөнүндө болгондуктан, тармактык өз ара аракеттенүү жагынан алда канча татаал. Мүчүлүштүктөрдү оңдоо, сынап көрүү кыйын жана күтүүсүз жүрүш-турушу мүмкүн. Ошол эле учурда, биз NAT жана брандмауэрди жеңишибиз керек, UDP бөгөттөлгөн тармактарда иштөөнү камсыз кылышыбыз керек.
Google'дун WebRTC ишке ашыруусун колдонуу абдан кыйын. SDK монтаждоо кызматтарын көрсөткөн бүтүндөй бир компания да бар. Мындан тышкары, Google'дун ишке ашыруусун бүт видеону кайра коддобостон, биздин система менен интеграциялоо өтө кыйынга турду.
Бирок, биз көптөн бери колдонуучуларга толук кандуу "жандуу" видео менен иштөө жана экрандагы сүрөт менен окуялардын ортосундагы артта калууларды азайтуу мүмкүнчүлүгүн берүүнү көптөн бери каалап келебиз. Мындан тышкары, бизде PTZ камераларын колдонууну кааладык, бул жерде кечигүү маанилүү, ыңгайлуураак.
Башка артта калууга каршы ишке ашыруулардын дагы эле чектелген функциялары бар экенин жана байкаларлык начар иштегендигин эске алып, WebRTC колдонууну чечтик.
Эмне кылдык

WebRTC платформасын туура ишке ашыруу оңой иш эмес. Кандайдыр бир туура эмес эсептөө же так эместик видео берүүнүн кечиктирилишине алып келиши мүмкүн, башка платформаларга салыштырмалуу азайбастан, ал тургай көбөйөт.
WebRTC туура иштеши үчүн, биринчи кезекте, веб-видео менен иштөө үчүн стектин технологиялык жаңылоосун жүргүзүү зарыл. Биз ушундай кылдык.
Биринчиден, биз Websocket аркылуу WebRTC сигнал берүү протоколунун серверин ишке ашырдык, ошондой эле webrtc.org SDK негизинде булуттагы WebRTC тең серверин орноттук. Анын милдети видео агымдарды H.264 + Opus/G.711 форматындагы WebRTC кардарларына видео транскоддоштуруусуз таратуу.
Биз Websocketти сигнал берүү протоколу катары тандадык, анткени ал бардык популярдуу веб-браузерлерде жогорку сапаттагы колдоого ээ. Ушундан улам, сиз AJAXке салыштырмалуу өнүгүүнүн кошумча чыгымдарын гана эмес, бир нече жолу TCP жана TLS кол алышууда убакытты жана ресурстарды текке кетирбөөгө болот.
Чындыгында, демейки боюнча, WebRTC булак менен кардар тиркемелеринин ортосундагы реалдуу убакыт видео байланышын туура конфигурациялоо, колдоо жана токтотуу үчүн зарыл болгон сигнал берүү протоколун камсыз кылбайт.
Ал эми сигнал берүү технологиясын өз алдынча ишке ашыруу үчүн, биз бир нече веб-протоколдорду (Websocet, WebRTC) колдоосу менен өзүбүздүн сигнализация серверибизди иштеп чыгышыбыз керек болчу. Жана реалдуу убакытта сеанстарды жана эскертмелерди коопсуз башкаруу мүмкүнчүлүгү, видео башкаруу жана башка көптөгөн нерселер.
Биз P2P аркылуу эмес, кечиктирүүнү азайтуу үчүн UDP жана агымды көзөмөлдөө аркылуу P2P чектөөлөрүн жеңдик. Бул ошондой эле WebRTCге орнотулган, анткени негизги колдонуу - браузер аркылуу p2p сүйлөшүүлөрү.
Мобилдик кардарда биз ойноткучту webrtc.org SDK аркылуу ишке ашырдык, анткени ал гана агымды башкарууну туура ишке ашырат, бардык белгилүү Forward Error Correction (FEC) схемаларына ээ жана бардык браузерлер үчүн пакеттерди кайра жөнөтүү механизмин туура ишке ашырат. Webrtc.org SDK Google тарабынан жигердүү иштеп жатканы да маанилүү.
WebRTC ишке ашыруунун натыйжасы кандай?
Камералардан жандуу видеону көрүү үчүн, биз сиздин жеке аккаунтуңузга WebRTC негизинде жаңы оптималдаштырылган ойноткучту коштук. Ал видеону тез жүктөө ылдамдыгын камсыздайт жана көрүү убактысы көбөйгөн сайын топтолгон кечигүү көйгөйүн толугу менен жок кылат.
Ivideon булут кызматына WebRTC колдоосун киргизгенден кийин, биздин кардарлар эми толук кандуу түз видеону көрө алышат деп толук ишеним менен айта алабыз. Эми видео ырааттуулугун берүүдөгү кечигүү бир секунддан ашпайт! Салыштыруу үчүн, мурунку HLS кыймылдаткычы 5-7 секунда кечигүү менен видео жеткирүүнү камсыз кылган. Видеону көрсөтүү ылдамдыгынын айырмасы абдан маанилүү жана колдонуучу аны биздин видео сервис менен иштей баштагандан кийин дароо байкайт.
Биз күткөндөй, жаңы ойноткучту ишке ашыруу PTZ жана камера менен үн байланышын жакшыртты.

Биз көңүл бургубуз келген бир гана тымызын жагдай бар. Жаңы WebRTC ойноткуч учурда сыноо режиминде иштеп жатат. Ошондуктан биз аны бардык кардарларыбыз үчүн демейки боюнча иштетпейбиз. Бирок камеранын жөндөөлөрүндөгү тиешелүү нерсени иштетип, аны өзүңүз жандырсаңыз болот (бул үчүн төмөнкүгө өтүңүз: ).
Ivideon кызматында WebRTC ишке ашыруунун өзгөчөлүктөрү

WebRTC дагы эле учурда эксперименталдык технология болуп саналат. Анын колдоосу бардык браузерлерде жана колдонуучунун түзмөктөрүндө, ошондой эле бардык камераларда туура эмес ишке ашырыла элек.
Дал ушул себептен биз WebRTC ойноткучту бардык колдонуучулар үчүн демейки кылып жасай элекпиз.
Азырынча биз WebRTCди Google Chrome серепчилеринде гана колдонууну сунуштайбыз. Firefox жана Safari акыркы версиялары да бул технологияны колдойт, бирок, тилекке каршы, ал дагы эле туруксуз.
Мобилдик түзмөктөрдө браузерлер үчүн WebRTC колдоосун азырынча ишке ашыра элекпиз. Учурда, сиз мобилдик аспаптан кирип, WebRTC иштетсеңиз, бул режим иштебейт. Бирок, WebRTC биздин мобилдик тиркемелерде жеткиликтүү и .
Биздин кызматта WebRTC ишке ашыруунун өзгөчөлүктөрү жөнүндө окуяны жыйынтыктап жатып, дагы эки тымызын пунктка көңүл буралы.
Биринчиден, технология реалдуу убакыт режиминде түз видеону берүүгө багытталган. Демек, эгер сиздин каналыңызда видеону өткөрүү үчүн өткөрүү жөндөмдүүлүгү жетишсиз болсо, анда сиз кадрдын төмөндөшүн байкайсыз (HLS менен сиз видеонун өчүшүн жана күтүү убактысынын көбөйгөнүн байкайсыз, бирок кадрдын түшүүсү болбойт), бирок видео дагы эле реалдуу түрдө көрсөтүлөт. убакыт.
Экинчиден, технология реалдуу убакыт режиминде жандуу видео менен иштөө үчүн иштелип чыккандыктан, биз аны архивделген видео маалыматтар менен иштөө үчүн колдонбойбуз.
Кызматка башка өзгөртүүлөр
Бул учурда, Flash мындан ары автоматтык кыймылдаткыч тандоо механизмине катышпайт. Сиз дагы эле мындай ойноткучту колдоно аласыз, бирок бул үчүн сиз аны эсеп же камера жөндөөлөрүнөн кол менен тандооңуз керек. Бул модага болгон сый эмес, жөн гана биздин кызматтын статистикасына ылайык, Flash менен иштеген колдонуучулар дээрлик калбады. Ал эми колдонуучунун браузери аны колдойбу же жокпу, аныктоого аракет кылып, биз 2 секунд баалуу убакытты жоготобуз.
Бул жерде биздин булуттагы видеокөзөмөл тутумубузда жана жеке аккаунтубузда сизди күтүп жаткан өзгөрүүлөрдүн кыскача баяндамасы. Биз менен болуңуз жана жаңылыктарды байкаңыз!
Source: www.habr.com
