WebRTC ба видео тандалт: бид камерын видео саатлыг хэрхэн ялсан

WebRTC ба видео тандалт: бид камерын видео саатлыг хэрхэн ялсан

Үүлэн видео тандалтын систем дээр ажиллаж эхэлсэн эхний өдрүүдээс бид Ivideon-ээс татгалзаж чадах ямар ч шийдэлгүй асуудалтай тулгарсан - энэ бол бидний Эверест, авиралт нь маш их энерги зарцуулсан, гэхдээ одоо бид эцэст нь болсон. хөндлөн платформ оньсогоны дээд хэсэгт мөсөн сүх наасан.

Интернетээр аудио, видео дамжуулах систем нь тоног төхөөрөмж, вэб үйлчлүүлэгчид, тэдгээрийн дэмждэг стандартаас хамаарахгүй байх ёстой бөгөөд сүлжээний хаягийн орчуулагч, галт хана байгаа тохиолдолд зөв ажиллах ёстой. Клоуд видео тандалтын хэрэглэгч аналог камер ашигладаг байсан ч үйлчилгээнд нэвтрэхийг хүсч, хамгийн орчин үеийн төхөөрөмж дээр шууд видео нэвтрүүлгийг үзэхийг илүүд үздэг.

Хэрэглэгч видеог хамгийн бага сааталтайгаар үзэхийг хүсч байгаа нь маш чухал юм. Хөтөч дээр бага хоцролттой видеог харуулах бараг цорын ганц арга бол WebRTC (вэб бодит цагийн харилцаа холбоо) ашиглах явдал юм. WebRTC нь хөтчөөр видео болон аудиог үе тэнгийн хооронд дамжуулах технологийн багц бөгөөд эхлээд бага хоцролттой видео урсгалыг дамжуулах, тоглуулах зориулалттай. Энэ зорилгоор бусад зүйлсийн дотор UDP протоколыг ашигладаг.

Шинэ хөдөлгүүр нь хэрэглэгчдэд юу өгч байгааг хэлэхээс өмнө бид HLS технологийг яагаад, яагаад дэмждэг, яагаад цааш явахаар шийдсэнээ сануулах болно.

HLS хөдөлгүүр: давуу болон сул талууд

WebRTC ба видео тандалт: бид камерын видео саатлыг хэрхэн ялсан
(c)

HLS (HTTP шууд дамжуулалт) технологийг Apple компани боловсруулсан тул анх Apple-ийн төхөөрөмжүүд дээр дэмжигдсэн нь гайхах зүйл биш юм. Өнөөдөр HLS видеог бараг бүх сет-топ хайрцаг болон үйлдлийн системтэй олон төхөөрөмж дэмждэг. Android.

HLS хөдөлгүүр нь сайн мэддэг H264 видео кодлогчийг AAC эсвэл MP3 аудио урсгалтай хослуулан видео өгөгдлийг дамжуулахад ашигладаг. Аудио болон видео өгөгдлийн урсгалыг бүхэлд нь MPEG-TS зөөвөрлөх саванд савласан. HTTP протоколоор дамжуулахын тулд урсгалд агуулагдах мэдээллийг m3u8 тоглуулах жагсаалтад тодорхойлсон хэсгүүдэд хуваана. Зөвхөн дараа нь эдгээр хэсгүүдийг тоглуулах жагсаалтын хамт HTTP-ээр дамжуулдаг. Автоматаар хуваагдана гэдэг нь секундээр саатах гэсэн үг. Энэ нь MPEG-TS контейнерийн онцлог юм.

HLS хөдөлгүүр нь олон битийн дамжуулалт, Live/VOD-г дэмждэг.

HLS-ийн гол давуу талууд:

  • бүх томоохон хөтөч дээр суурилуулсан дэмжлэг;
  • хэрэгжүүлэхэд хялбар (WebRTC-тэй харьцуулахад);
  • Сегментүүдийг CDN-д нэг удаа байршуулах боломжтой тул бүх төрлийн өргөн нэвтрүүлгийг олон нийтэд хүргэх нь маш тохиромжтой бөгөөд үр дүнтэй байдаг.

Хөдөлгүүрийн энгийн байдлыг үл харгалзан бүх зүйл харагдаж байгаа шигээ жигд биш байна. Хамгийн гол асуудал бол гуравдагч талын тоглуулагч хөгжүүлэгчид Apple-ийн зөвлөмжөөс, жишээлбэл, дэмжигдсэн аудио форматын талаар холдсон явдал юм. Ялангуяа олон хөгжүүлэгчид алдартай аудио урсгалтай ажиллах чадварыг нэмж эхэлсэн: mpeg2 видео, mpeg2 аудио гэх мэт. Үүний үр дүнд тэд өөр өөр тоглогчдод зориулж өөр өөр тоглуулах жагсаалтын форматыг бий болгох шаардлагатай болсон.

Гэхдээ HLS хөдөлгүүртэй холбоотой хамгийн том бэрхшээлүүдийн нэг бол өгөгдөл дамжуулах өндөр хоцролт юм.

"Тормос" -ын гарал үүсэл

HLS-ийн хоцролт өндөр байгаагийн гол шалтгаан нь програмистууд хамгийн өндөр чанартай зураг авахын тулд хөдөлгүүрийг бүтээсэнтэй холбоотой юм. Тиймээс ашигласан фрэймийн интервалын параметрүүд болон тоглуулах буферийн хэмжээ нь шууд видео нэвтрүүлэгт тохиромжгүй байдаг. Үүнээс болж видео бичлэгийг дамжуулахад нэлээд их саатал гардаг бөгөөд энэ нь 5-7 секунд байж болно.

Нэг талаараа, жишээлбэл, видео байршуулах серверээс кино үздэг хүмүүст энэ нь тийм ч их биш юм. Гэхдээ видео тандалтын системийн хувьд видео бичлэгийг дамжуулах саатал нь маш чухал байж болно.

Хэрэв та ажилчид цагт нэг удаа мониторноосоо дээш хардаг оффисыг харж байгаа бол 5 секундын саатал огт хамаагүй. Гэтэл хүмүүс жишээлбэл, хөлбөмбөгийн тэмцээнийг дамжуулахдаа чат дээр аль хэдийн GOOOOL гэж бичсэн байсан гэж гомдоллож эхэлсэн, гэхдээ энэ нь видеонд хараахан ороогүй байна :). Бидэнд Ivideon бараг Skype-ийг орлох хэд хэдэн хэрэглэгчийн тохиолдол бий.

HLS-ийн хоцролтыг даван туулах боломжтой юу? Энэ асуултын хариулт нь хортон шавьжтай тэмцэх шинэхэн мэргэжилтнүүдэд зориулсан лекц дээр туршлагатай харх устгагчийн хэлсэн үг шиг сонсогдож байна: "Хархыг устгах боломжгүй, гэхдээ тэдний тоог боломжийн хэмжээнд хүртэл бууруулж болно." HLS-ийн сааталтай адил үүнийг тэг хүртэл бууруулах боломжгүй, гэхдээ зах зээл дээр саатлыг мэдэгдэхүйц бууруулах боломжтой шийдлүүд байдаг.

Нарийн зүсэлт

Хөдөлгүүрийн өөр нэг сул тал бол өгөгдөл дамжуулахад жижиг файлуудыг ашиглах явдал юм. Энэ юу нь болохгүй байгаа юм шиг санагдаж байна?

Олон тооны жижиг файлуудыг нэг зөөвөрлөгчөөс нөгөөд хуулах гэж оролдсон хэн бүхэн ийм багцын бичих хурд нь ижил хэмжээтэй нэг том файлаас хамаагүй бага байдгийг анзаарсан байх. Мөн хатуу диск рүү нэвтрэх эрч хүч ихээхэн нэмэгдэж, энэ нь ерөнхийдөө бүх компьютерийн гүйцэтгэлд сөргөөр нөлөөлдөг. Тиймээс видео өгөгдлийг 10 секундын жижиг хэсгүүдэд дамжуулах нь хөдөлгүүрийн хоцролтыг нэмэгдүүлэхэд хувь нэмэр оруулдаг.

HLS технологийн бүх давуу болон сул талуудыг товч дурдъя.

HLS-ийн давуу талууд:

  1. Ямар ч төхөөрөмжтэй ажиллах чадвартай. Та ухаалаг утас, таблет, зөөврийн компьютер эсвэл ширээний компьютер гэх мэт орчин үеийн ямар ч төхөөрөмж дээр видео үзэх боломжтой. Хамгийн гол нь вэб хөтөч нь шинэчлэгдсэн, HTML5 болон Media Source Extensions-тэй нийцдэг.
  2. Маш сайн зургийн чанар. Дасан зохицох өгөгдөл дамжуулах функц нь интернетийн холболтын зурвасын өргөнөөс хамааран дамжуулсан видеоны чанарыг динамикаар өөрчлөх боломжийг олгодог бол алгоритм нь хамгийн дээд чанарыг хадгалахыг хичээдэг.
  3. Хэрэглэгчийн тоног төхөөрөмжийн нарийн төвөгтэй тохиргоо хийх шаардлагагүй.

Сул талууд:

  1. Зарим төхөөрөмж дээр хөдөлгүүртэй ажиллахад хязгаарлагдмал дэмжлэг үзүүлдэг.
  2. Зураг дамжуулах өндөр саатал.
  3. Жижиг файлуудыг ашигласнаас болж оновчлолын зардал, нарийн төвөгтэй байдал мэдэгдэхүйц нэмэгдсэн. Савны шинж чанараас шалтгаалан бид сегментийн хэмжээнээс бага хоцролтыг хэзээ ч авч чадахгүй.

HLS-ийн сул талууд нь бидний хувьд давуу талуудаас давж, өөр хувилбаруудыг хайхад хүргэсэн.

WebRTC гэж юу вэ

WebRTC ба видео тандалт: бид камерын видео саатлыг хэрхэн ялсан
(c)

WebRTC платформыг Google-ээс 2011 онд хөтчүүд болон гар утасны програмуудын хооронд видео болон аудио мэдээллийг хамгийн бага хоцролттой дамжуулах зорилгоор боловсруулсан. Үүний тулд стандарт 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 платформыг зөв хэрэгжүүлэх нь тийм ч амар ажил биш юм. Аливаа буруу тооцоолол, алдаа нь бусад платформтой харьцуулахад видео дамжуулах саатал зогсохгүй, бүр нэмэгдэхэд хүргэдэг.

WebRTC зөв ажиллахын тулд юуны өмнө вэб видеотой ажиллах стекийн технологийн шинэчлэл хийх шаардлагатай. Үүнийг л бид хийсэн.

Эхлээд бид Websocket-ийн дээд талд WebRTC дохионы протоколын серверийг хэрэгжүүлсэн бөгөөд webrtc.org SDK дээр суурилсан WebRTC peer серверийг үүлэн дээр байрлуулсан. Үүний үүрэг бол 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 ба видео тандалт: бид камерын видео саатлыг хэрхэн ялсан

Бидний анхаарлыг татахыг хүссэн ганцхан нарийн зүйл бий. Шинэ WebRTC тоглуулагч одоогоор туршилтын горимд ажиллаж байна. Тиймээс бид үүнийг бүх үйлчлүүлэгчиддээ анхдагч байдлаар идэвхжүүлдэггүй. Гэхдээ та камерын тохиргоонд тохирох зүйлийг идэвхжүүлснээр өөрөө идэвхжүүлж болно (үүнийг хийхийн тулд та дараах руу очих хэрэгтэй. хувийн данс).

Ivideon үйлчилгээнд WebRTC-ийг хэрэгжүүлэх онцлог

WebRTC ба видео тандалт: бид камерын видео саатлыг хэрхэн ялсан

WebRTC нь одоогоор туршилтын технологи хэвээр байна. Түүний дэмжлэг нь бүх хөтөч, хэрэглэгчийн төхөөрөмжид зөв хэрэгжээгүй байгаа бөгөөд бүх камерт байдаггүй.

Ийм учраас бид WebRTC тоглуулагчийг бүх хэрэглэгчдийн хувьд өгөгдмөл болгож хараахан болгоогүй байна.

Одоогоор бид WebRTC-г зөвхөн Google Chrome хөтөч дээр ашиглахыг зөвлөж байна. Firefox болон Safari-ийн хамгийн сүүлийн хувилбарууд нь энэ технологийг дэмждэг боловч харамсалтай нь энэ нь тогтвортой биш байна.

Бид мобайл төхөөрөмж дээрх хөтчүүдэд WebRTC дэмжлэгийг хараахан хэрэгжүүлээгүй байна. Одоогоор та мобайл төхөөрөмжөөс нэвтэрч WebRTC-г идэвхжүүлбэл энэ горим ажиллахгүй. Гэсэн хэдий ч, WebRTC нь манай гар утасны програмуудад зориулагдсан Android и Тагийн.

Манай үйлчилгээнд WebRTC-ийн хэрэгжилтийн онцлогуудын тухай түүхийг дуусгаад өөр хоёр нарийн зүйлийг тэмдэглэе.

Нэгдүгээрт, технологи нь бодит цаг хугацаанд шууд видеог дамжуулахад чиглэгддэг. Тиймээс, хэрэв таны суваг видеог дамжуулахад хангалттай зурвасын өргөнгүй бол та фрэймийн уналтыг анзаарах болно (HLS-ийн тусламжтайгаар та видео бүдгэрч, хоцрогдол ихсэхийг анзаарах болно, гэхдээ фрэймийн уналт байхгүй болно), гэхдээ видео бодит байдлаар цацагдах болно. цаг.

Хоёрдугаарт, технологи нь бодит цаг хугацаанд шууд видеотой ажиллахад зориулагдсан тул архивлагдсан видео өгөгдөлтэй ажиллахад ашигладаггүй.

Үйлчилгээний бусад өөрчлөлтүүд

Энэ үед Flash нь хөдөлгүүрийг автоматаар сонгох механизмд оролцохоо больсон. Та ийм тоглуулагчийг ашиглаж болно, гэхдээ үүнийг хийхийн тулд та үүнийг данс эсвэл камерын тохиргооноос гараар сонгох хэрэгтэй. Энэ бол загварын хувьд хүндэтгэл биш, зүгээр л манай үйлчилгээний статистик мэдээллээс үзэхэд Flash-тэй ажиллах хэрэглэгч бараг байхгүй байна. Хэрэглэгчийн хөтөч үүнийг дэмждэг эсэхийг тодорхойлох гэж оролдоход бид 2 секунд орчим үнэт цагаа алддаг.

Манай үүлэн видео тандалтын систем болон хувийн дансанд таныг хүлээж буй өөрчлөлтүүдийн товч тоймыг энд оруулав. Бидэнтэй хамт байж, мэдээг дагаарай!

Эх сурвалж: www.habr.com

DDoS хамгаалалт, VPS VDS сервер бүхий сайтуудад найдвартай хостинг худалдаж аваарай 🔥 DDoS хамгаалалттай, VPS VDS сервертэй найдвартай вэбсайт хостинг худалдаж аваарай | ProHoster