
Bulutli videokuzatuv tizimida ishlagan birinchi kunlardanoq biz muammoga duch keldik, uni hal qilmasdan Ivideon-dan voz kechishimiz mumkin edi - bu bizning Everest edi, ko'tarilish juda ko'p kuch talab qildi, ammo endi biz nihoyat shunday qildik. platformalararo boshqotirmaning yuqori qismiga muz boltasini tiqdi.
Audio va videoni Internet orqali uzatish tizimi uskunalarga, veb-mijozlarga va ular qo'llab-quvvatlaydigan standartlarga bog'liq bo'lmasligi, shuningdek, tarmoq manzillari tarjimonlari va xavfsizlik devorlari mavjud bo'lganda to'g'ri ishlashi kerak. Bulutli videokuzatuv foydalanuvchisi, garchi u analog kameralardan foydalansa ham, xizmatga kirishni xohlaydi va eng zamonaviy qurilmada jonli video translyatsiyani ko'rishni afzal ko'radi.
Foydalanuvchining videolarni minimal kechikish bilan tomosha qilishni xohlashi juda muhimdir. Brauzerda past kechikish bilan videoni ko'rsatishning deyarli yagona yo'li WebRTC (veb real vaqtda aloqa) dan foydalanishdir. WebRTC - bu brauzerlarda video va audioni tengdoshga uzatish uchun texnologiyalar to'plami bo'lib, dastlab past kechikish bilan video oqimlarini uzatish va ijro etish uchun mo'ljallangan. Shu maqsadda, boshqa narsalar qatorida, UDP protokoli ham qo'llaniladi.
Yangi dvigatel foydalanuvchiga nima berishini aytib berishdan oldin, biz HLS texnologiyalarini nima uchun va nima uchun qo'llab-quvvatlayotganimizni va nima uchun davom etishga qaror qilganimizni eslatib o'tamiz.
HLS dvigateli: ijobiy va salbiy tomonlari

()
HLS (HTTP Live Streaming) texnologiyasi Apple tomonidan ishlab chiqilgan, shuning uchun u birinchi marta Apple qurilmalarida qo'llab-quvvatlangani ajablanarli emas. Bugungi kunda HLS video deyarli barcha pristavkalar va OT ishlaydigan ko'plab qurilmalar tomonidan qo'llab-quvvatlanadi. Android.
HLS dvigateli video ma'lumotlarni uzatish uchun AAC yoki MP264 audio oqimlari bilan birgalikda taniqli H3 video kodekidan foydalanadi. Butun audio va video ma'lumotlar oqimi MPEG-TS transport konteyneriga qadoqlangan. HTTP protokoli orqali uzatish uchun oqimdagi ma'lumotlar m3u8 pleylistlarida tasvirlangan bo'laklarga bo'linadi. Va shundan keyingina ushbu fragmentlar pleylistlar bilan birga HTTP orqali uzatiladi. Chiqarish avtomatik ravishda soniyalarda kechikishni anglatadi. Bu MPEG-TS konteynerining xususiyati.
HLS dvigateli ko'p bitli oqimlarni ham qo'llab-quvvatlaydi, Live/VOD.
HLS ning asosiy afzalliklari:
- barcha asosiy brauzerlarda o'rnatilgan qo'llab-quvvatlash;
- amalga oshirish qulayligi (WebRTC bilan solishtirganda);
- Segmentlarni CDN ga bir marta yuklash mumkinligi sababli katta auditoriya uchun barcha turdagi eshittirishlarni tashkil qilish juda qulay va samarali.
Dvigatelning soddaligiga qaramay, hamma narsa ko'rinadigan darajada silliq emas. Asosiy muammo shundaki, uchinchi tomon o'yinchi ishlab chiquvchilari, masalan, qo'llab-quvvatlanadigan audio formatlar bo'yicha Apple tavsiyalaridan uzoqlashishdi. Xususan, ko'plab ishlab chiquvchilar mashhur audio oqimlari bilan ishlash qobiliyatini qo'shishni boshladilar: mpeg2 video, mpeg2 audio va boshqalar. Natijada, ular turli o'yinchilar uchun turli pleylist formatlarini yaratishga majbur bo'ldilar.
Ammo HLS dvigatelidagi eng katta muammolardan biri bu ma'lumotlarni uzatishda yuqori kechikishdir.
"tormoz" ning kelib chiqishi
HLS ning yuqori kechikishining asosiy sababi dasturchilar dvigatelni eng yuqori sifatli tasvirlarni olish uchun yaratganligidadir. Shuning uchun, ishlatiladigan ramka oralig'ining parametrlari va ijro etish buferining o'lchami jonli video translyatsiyalari uchun oddiygina mos kelmaydi. Shu sababli, video tasvirlarni uzatishda 5-7 soniya bo'lishi mumkin bo'lgan juda katta kechikish mavjud.
Bir tomondan, bu ko'p emas, masalan, video hosting serveridan film tomosha qilganlar uchun. Ammo video kuzatuv tizimlari uchun video tasvirlarni uzatishdagi kechikish juda muhim bo'lishi mumkin.
Agar siz xodimlar soatiga bir marta o'z monitorlaridan bosh ko'taradigan ofisni kuzatayotgan bo'lsangiz, unda 5 soniya kechikish umuman muhim emas. Ammo odamlar shikoyat qila boshladilar, masalan, futbol o'yinini translyatsiya qilishda ular allaqachon chatda GOOOOL deb yozishgan, ammo bu hali videoda yo'q :). Bizda allaqachon Ivideon Skype o'rnini bosadigan bir qator foydalanuvchi holatlari mavjud.
HLSda kechikishni engish mumkinmi? Bu savolga javob tajribali kalamushlarni yo'q qilish bo'yicha tajribali mutaxassisning zararkunandalarga qarshi kurash bo'yicha yangi mutaxassislar oldidagi ma'ruzasidagi nutqiga o'xshaydi: "Kalamushlarni yo'q qilib bo'lmaydi, ammo ularning sonini oqilona minimal darajaga kamaytirish mumkin". HLSdagi kechikish bilan bir xil, uni nolga tushirish mumkin bo'lmaydi, ammo bozorda kechikishni sezilarli darajada kamaytiradigan echimlar mavjud.
Nozik kesmalar
Dvigatelning yana bir kamchiligi - ma'lumotlarni uzatish uchun kichik fayllardan foydalanish. Aftidan, buning nimasi yomon?
Ko'p sonli kichik fayllarni bir vositadan ikkinchisiga nusxalashga harakat qilgan har bir kishi, ehtimol, bunday to'plamning yozish tezligi bir xil o'lchamdagi bitta katta fayldan ancha past ekanligini payqagandir. Va qattiq diskka kirish intensivligi sezilarli darajada oshadi, bu umuman butun kompyuterning ishlashiga salbiy ta'sir qiladi. Shu sababli, video ma'lumotlarini kichik 10 soniyali bo'laklarda uzatish ham dvigatelning kechikishiga yordam beradi.
Keling, HLS texnologiyasining barcha ijobiy va salbiy tomonlarini qisqacha ko'rib chiqaylik.
HLS ning afzalliklari:
- Har qanday qurilmalar bilan ishlash qobiliyati. Siz har qanday zamonaviy qurilmada, xoh u smartfon, planshet, noutbuk yoki ish stoli kompyuterida videolarni tomosha qilishingiz mumkin. Asosiysi, veb-brauzer yangilangan va HTML5 va Media Source Extensions bilan mos keladi.
- Ajoyib tasvir sifati. Amaldagi adaptiv ma'lumotlarni uzatish funktsiyasi Internetga ulanishning o'tkazish qobiliyatiga qarab uzatiladigan video sifatini dinamik ravishda o'zgartirishga imkon beradi, shu bilan birga algoritm maksimal sifatni saqlashga intiladi.
- Foydalanuvchi uskunasining murakkab konfiguratsiyasiga ehtiyoj yo'q.
Kamchiliklari:
- Ba'zi qurilmalarda dvigatel bilan ishlash uchun cheklangan qo'llab-quvvatlash.
- Tasvirni uzatishda yuqori kechikishlar.
- Kichik fayllardan foydalanish tufayli qo'shimcha xarajatlar va optimallashtirishning murakkabligi sezilarli darajada oshadi. Konteynerning tabiatiga ko'ra, biz hech qachon segment o'lchamidan pastroq kechikishni ololmaymiz.
HLS ning kamchiliklari biz uchun uning afzalliklaridan ustun keldi va bizni muqobil variantlarni izlashga majbur qildi.
WebRTC nima

()
WebRTC platformasi 2011-yilda Google tomonidan brauzerlar va mobil ilovalar o‘rtasida minimal kechikish bilan oqimli video va audio ma’lumotlarni uzatish uchun ishlab chiqilgan. Buning uchun standart UDP protokoli va oqimni boshqarishning maxsus algoritmlari qo'llaniladi. Bugungi kunda bu ochiq kodli loyiha bo'lib, u Google tomonidan faol ravishda qo'llab-quvvatlanadi va ishlab chiqilmoqda.
WebRTC - bu tengdoshga video va audio uzatish uchun texnologiyalar to'plami. Ya'ni, masalan, WebRTC-dan foydalanadigan foydalanuvchi brauzerlari ma'lumotlarni saqlash va qayta ishlash uchun masofaviy serverlardan foydalanmasdan ma'lumotlarni bir-biriga to'g'ridan-to'g'ri uzatishi mumkin. Barcha ma'lumotlar oxirgi foydalanuvchilarning brauzerlari va mobil ilovalari tomonidan ham qayta ishlanadi.
Ushbu texnologiyaning qulayligi va keng imkoniyatlari barcha mashhur brauzerlar ishlab chiquvchilari tomonidan yuqori baholandi. WebRTC qo'llab-quvvatlashi hozirda Mozilla Firefox, Opera, Google Chrome (va barcha Chromium asosidagi brauzerlar) da, shuningdek, ishlaydigan mobil ilovalarda mavjud. Android va iOS.
Barcha shubhasiz afzalliklariga qaramay, WebRTC bir nechta muhim kamchiliklarga ega.
Tanlovning qiyinligi
WebRTC texnologiyasi P2P haqida bo'lgani uchun tarmoq o'zaro ta'siri nuqtai nazaridan ancha murakkab. Nosozliklarni tuzatish, sinab ko'rish qiyin va o'zini oldindan aytib bo'lmaydigan tarzda tutishi mumkin. Shu bilan birga, biz NAT va xavfsizlik devorini engishimiz kerak, UDP bloklangan tarmoqlarda ishlashni ta'minlashimiz kerak.
Google-ning WebRTC dasturidan foydalanish juda qiyin. Hatto SDK yig'ish xizmatlarini ko'rsatadigan butun kompaniya mavjud. Bundan tashqari, Google ilovasini butun videoni qayta kodlamasdan tizimimiz bilan integratsiya qilish juda qiyin edi.
Biroq, biz uzoq vaqtdan beri foydalanuvchilarga to'liq "jonli" video bilan ishlash va ekrandagi tasvir va voqealar o'rtasidagi kechikishni minimallashtirish imkoniyatini berishni xohladik. Bundan tashqari, bizda kechikishlar muhim bo'lgan, qulayroq bo'lgan PTZ kameralaridan foydalanish istagi bor edi.
Boshqa anti-kechikish dasturlari hali ham cheklangan funksionallikka ega ekanligini va sezilarli darajada yomon ishlashini hisobga olib, biz WebRTC dan foydalanishga qaror qildik.
Biz nima qildik

WebRTC platformasini to'g'ri amalga oshirish oson ish emas. Har qanday noto'g'ri hisoblash yoki noto'g'ri videoni uzatishda kechikishlar nafaqat boshqa platformalar bilan solishtirganda kamayishi, balki ortib borishiga olib kelishi mumkin.
WebRTC to'g'ri ishlashi uchun, birinchi navbatda, veb-video bilan ishlash uchun stekni texnologik yangilashni amalga oshirish kerak. Biz shunday qildik.
Birinchidan, biz Websocket orqali WebRTC signalizatsiya protokoli serverini joriy qildik, shuningdek webrtc.org SDK asosida bulutda WebRTC peer serverini joylashtirdik. Uning vazifasi video oqimlarini mijozning WebRTC tengdoshlariga H.264 + Opus/G.711 formatida video transkodsiz tarqatishdir.
Biz Websocket-ni signalizatsiya protokoli sifatida tanladik, chunki u allaqachon barcha mashhur veb-brauzerlarda yuqori sifatli yordamga ega. Shu sababli, siz nafaqat rivojlanish xarajatlarini sezilarli darajada kamaytirishingiz, balki AJAX bilan solishtirganda takroriy TCP va TLS qo'l siqishlarida vaqt va resurslarni behuda sarflashning oldini olishingiz mumkin.
Gap shundaki, sukut bo'yicha WebRTC manba va mijoz ilovalari o'rtasidagi real vaqtda video aloqani to'g'ri sozlash, saqlash va tugatish uchun zarur bo'lgan signalizatsiya protokolini ta'minlamaydi.
Signal texnologiyasini mustaqil ravishda amalga oshirish uchun biz bir nechta veb-protokollarni (Websocet, WebRTC) qo'llab-quvvatlaydigan o'z signalizatsiya serverimizni ishlab chiqishimiz kerak edi. Va real vaqt rejimida seanslar va bildirishnomalarni xavfsiz boshqarish, video boshqaruvi va boshqalar bilan.
Biz kechikishni P2P orqali emas, balki kechikishni kamaytirish uchun UDP va oqim nazorati orqali kamaytirish orqali P2P cheklovlarini yengib chiqdik. Bu WebRTC-ga ham o'rnatilgan, chunki asosiy foydalanish brauzer orqali p2p suhbatlaridir.
Mobil mijozda biz pleerni webrtc.org SDK-dan foydalangan holda amalga oshirdik, chunki faqat u oqimni boshqarishni to'g'ri amalga oshiradi, barcha ma'lum bo'lgan oldinga xatoliklarni tuzatish (FEC) sxemalariga ega va barcha brauzerlar uchun paketlarni qayta yuborish mexanizmini to'g'ri amalga oshiradi. Webrtc.org SDK Google tomonidan faol ishlab chiqilayotgani ham muhim.
WebRTC ni amalga oshirish natijasi qanday?
Kameralardan jonli videoni ko‘rish uchun shaxsiy hisobingizga WebRTC asosidagi optimallashtirilgan yangi pleer qo‘shdik. U tez video yuklash tezligini ta'minlaydi va ko'rish vaqti oshgani sayin kechikish muammosini butunlay yo'q qiladi.
Ivideon bulut xizmatida WebRTC qo'llab-quvvatlashini joriy qilganimizdan so'ng, biz to'liq ishonch bilan aytishimiz mumkinki, mijozlarimiz endi to'liq jonli videoni tomosha qilishlari mumkin. Endi video ketma-ketliklarni translyatsiya qilishda kechikish bir soniyadan oshmaydi! Taqqoslash uchun, oldingi HLS dvigateli 5-7 soniya kechikish bilan video yetkazib berishni ta'minladi. Videoni namoyish qilish tezligidagi farq juda katta va foydalanuvchi buni bizning video xizmatimiz bilan ishlashni boshlagandan so'ng darhol sezadi.
Biz kutganimizdek, yangi pleerning amalga oshirilishi PTZ-ning sezgirligini va kamera bilan ovozli aloqani yaxshiladi.

Biz diqqatni jalb qilmoqchi bo'lgan faqat bitta nozik jihat bor. Yangi WebRTC pleer hozirda test rejimida ishlamoqda. Va shuning uchun biz uni barcha mijozlarimiz uchun sukut bo'yicha yoqmaymiz. Ammo siz kamera sozlamalarida mos keladigan elementni yoqish orqali uni o'zingiz faollashtirishingiz mumkin (buni amalga oshirish uchun ).
Ivideon xizmatida WebRTC ni amalga oshirish xususiyatlari

WebRTC hozircha eksperimental texnologiya hisoblanadi. Uni qo'llab-quvvatlash hali barcha brauzerlarda va foydalanuvchi qurilmalarida, shuningdek, barcha kameralarda to'g'ri amalga oshirilmagan.
Aynan shuning uchun biz hali WebRTC pleerini barcha foydalanuvchilar uchun birlamchi qilib qo'yganimiz yo'q.
Hozircha biz WebRTC dan faqat Google Chrome brauzerlarida foydalanishni tavsiya qilamiz. Firefox va Safari-ning so'nggi versiyalari ham ushbu texnologiyani qo'llab-quvvatlaydi, ammo, afsuski, u hali ham beqaror.
Biz hali mobil qurilmalardagi brauzerlar uchun WebRTC-ni qo'llab-quvvatlaganimiz yo'q. Hozirda, agar siz mobil qurilmadan tizimga kirsangiz va WebRTC-ni faollashtirsangiz, bu rejim ishlamaydi. Biroq, WebRTC bizning mobil ilovalarimizda mavjud и .
Va bizning xizmatimizda WebRTC-ni amalga oshirish xususiyatlari haqidagi hikoyani yakunlab, yana ikkita nozik fikrga e'tibor qaratamiz.
Birinchidan, texnologiya real vaqtda jonli videoni translyatsiya qilishga qaratilgan. Shuning uchun, agar sizning kanalingiz videoni uzatish uchun etarli tarmoqli kengligi bo'lmasa, siz kadrlar tushishini sezasiz (HLS bilan siz videoning o'chib ketishini va kechikishning kuchayishini sezasiz, lekin kadrlar tushishi bo'lmaydi), lekin video baribir haqiqiy translyatsiya qilinadi. vaqt.
Ikkinchidan, texnologiya real vaqtda jonli video bilan ishlashga mo'ljallanganligi sababli, biz uni arxivlangan video ma'lumotlari bilan ishlash uchun ishlatmaymiz.
Xizmatdagi boshqa o'zgarishlar
Hozirgi vaqtda Flash dvigatelni avtomatik tanlash mexanizmida ishtirok etmaydi. Siz hali ham bunday o'yinchidan foydalanishingiz mumkin, ammo buning uchun uni hisob yoki kamera sozlamalarida qo'lda tanlashingiz kerak. Bu modaga hurmat emas, shunchaki bizning xizmatimiz statistikasiga ko'ra, Flash bilan ishlaydigan foydalanuvchi deyarli qolmagan. Va foydalanuvchining brauzeri uni qo'llab-quvvatlaydimi yoki yo'qligini aniqlashga urinib, biz 2 soniya qimmatli vaqtni yo'qotamiz.
Bulutli video kuzatuv tizimimiz va shaxsiy kabinetimizda sizni kutayotgan o'zgarishlar haqida qisqacha ma'lumot. Biz bilan qoling va yangiliklarni kuzatib boring!
Manba: www.habr.com
