
Mai nā lā mua o ka hana ʻana i kahi ʻōnaehana wikiō wikiō, ua loaʻa iā mākou kahi pilikia, me ka ʻole o ka hopena e hiki ai iā mākou ke haʻalele iā Ivideon - ʻo ia kā mākou Everest, piʻi i lawe nui i ka ikehu, akā i kēia manawa ua loaʻa iā mākou ka hopena. hoʻopaʻa i ke koʻi hau i ka piko o ka puzzle cross-platform.
ʻAʻole pono ka ʻōnaehana no ka hoʻouna ʻana i ka leo a me ka wikiō ma luna o ka Pūnaewele ma luna o nā lako, nā mea kūʻai pūnaewele a me nā kūlana a lākou e kākoʻo ai, a e hana pololei hoʻi ma ke alo o ka Network Address Translators a me nā pā ahi. Makemake ka mea hoʻohana kiaʻi wikiō e komo i ka lawelawe, ʻoiai inā hoʻohana ʻo ia i nā kāmera analog, a makemake ʻo ia e nānā i ka hoʻolaha wikiō ola ma ka polokalamu hou loa.
He mea koʻikoʻi ka makemake o ka mea hoʻohana e nānā i nā wikiō me ka liʻiliʻi liʻiliʻi. ʻO ke ala wale nō e hōʻike ai i ke wikiō me ka haʻahaʻa haʻahaʻa i loko o kahi polokalamu kele pūnaewele ʻo ia ka hoʻohana ʻana iā WebRTC (nā kamaʻilio manawa maoli pūnaewele). ʻO WebRTC he pūʻulu ʻenehana no ka hoʻoili wikiō a me nā leo ma nā polokalamu kele pūnaewele, i hana mua ʻia no ka hoʻouna ʻana a me ka pāʻani ʻana i nā kahawai wikiō me ka haʻahaʻa haʻahaʻa. No kēia kumu, ma waena o nā mea ʻē aʻe, hoʻohana ʻia ka protocol UDP.
Ma mua o ka haʻi ʻana iā ʻoe i ka mea a ka mīkini hou e hāʻawi ai i ka mea hoʻohana, e hoʻomanaʻo mākou iā ʻoe i ke kumu a me ke kumu e kākoʻo ai mākou i nā ʻenehana HLS, a no ke aha mākou i hoʻoholo ai e neʻe.
ʻenekini HLS: pono a me nā pōʻino

()
Технология HLS (HTTP Live Streaming) разработана в Apple, поэтому не удивительно, что впервые её поддержка появилась на устройствах именно этого бренда. На сегодняшний день видеоряд в формате HLS также умеют воспроизводить практически все телевизионные приставки и многие устройства, работающие на ОС Android.
Hoʻohana ka ʻenekini HLS i ka codec wikiō H264 kaulana i hui pū ʻia me nā kahawai leo AAC a i ʻole MP3 e kahe i ka ʻikepili wikiō. Hoʻopili ʻia ke kahawai ʻikepili leo a me ka wikiō i loko o kahi pahu lawe lawe MPEG-TS. No ka hoʻouna ʻana ma o ka protocol HTTP, ua māhele ʻia ka ʻike i loko o ke kahawai i nā ʻāpana i wehewehe ʻia ma nā papa mele m3u8. A laila hoʻouna ʻia kēia mau ʻāpana, a me nā mea pāʻani ma o HTTP. ʻO ka ʻoki ʻana ma ke ʻano he lohi i kekona. He hiʻohiʻona kēia o ka ipu MPEG-TS.
Kākoʻo pū ka ʻenekini HLS i nā kahawai multibitrate, Live/VOD.
Nā pōmaikaʻi nui o HLS:
- kākoʻo i kūkulu ʻia i loko o nā polokalamu kele nui a pau;
- maʻalahi o ka hoʻokō (hoʻohālikelike ʻia me WebRTC);
- He mea maʻalahi a maikaʻi hoʻi ka hoʻonohonoho ʻana i nā ʻano hoʻolaha āpau i ka lehulehu lehulehu ma muli o ka hiki ke hoʻouka ʻia nā ʻāpana i kahi CDN i hoʻokahi manawa.
ʻOiai ka maʻalahi o ka ʻenekini, ʻaʻole maʻalahi nā mea a pau e like me ka ʻike. ʻO ka pilikia nui, ua neʻe aku nā mea hoʻomohala ʻaoʻao ʻekolu mai nā ʻōlelo aʻoaʻo a Apple, no ka laʻana e pili ana i nā ʻano leo i kākoʻo ʻia. Ma keʻano, nui nā mea hoʻomohala i hoʻomaka e hoʻohui i ka hiki ke hana me nā kahawai leo kaulana: mpeg2 video, mpeg2 audio, etc. ʻO ka hopena, pono lākou e hana i nā ʻano papa inoa like ʻole no nā mea pāʻani like ʻole.
Akā ʻo kekahi o nā pilikia nui loa me ka mīkini HLS ʻo ka latency kiʻekiʻe i ka hoʻoili ʻikepili.
ʻO ke kumu o "brakes"
ʻO ke kumu nui o ka latency kiʻekiʻe o ka HLS aia ma ka ʻoiaʻiʻo ua hana nā mea polokalamu i ka mīkini e kiʻi i nā kiʻi kiʻekiʻe loa. No laila, ʻaʻole kūpono nā ʻāpana o ka wā kiʻi i hoʻohana ʻia a me ka nui o ka pā pāʻani no nā hoʻolaha wikiō ola. Ma muli o kēia, aia kahi lohi kiʻekiʻe loa i ka lawe ʻana i nā kiʻi wikiō, hiki ke 5-7 kekona.
Ma kekahiʻaoʻao,ʻaʻole nui kēia, no ka laʻana, no ka poʻe e nānā i kahi kiʻiʻoniʻoni mai kahi kikowaena wikiō. Akā no nā ʻōnaehana nānā wikiō, hiki i ka lohi i ka hoʻouna ʻana i nā kiʻi wikiō he mea nui loa.
Inā ʻoe e nānā ana i kahi keʻena kahi e nānā ai nā limahana mai kā lākou nānā ʻana i hoʻokahi hola, a laila ʻaʻole pili ka lohi o 5 kekona. Akā ua hoʻomaka ka poʻe e hoʻopiʻi, no ka laʻana, i ka hoʻolaha ʻana i kahi pāʻani pôpeku, ua kākau mua lākou iā GOOOOL i ke kamaʻilio, akā ʻaʻole kēia ma ke wikiō :). Loaʻa iā mākou kekahi mau hihia hoʻohana kahi e hoʻololi pono ai ʻo Ivideon iā Skype.
Hiki paha ke lanakila i ka latency ma HLS? ʻO ka pane i kēia nīnau, ua like ia me ka ʻōlelo a ka mea hoʻopau ʻiole akamai ma kahi haʻiʻōlelo i nā loea hoʻomalu pest novice: "ʻAʻole hiki ke hoʻopau ʻia nā ʻiole, akā hiki ke hoʻemi ʻia kā lākou helu i kahi haʻahaʻa kūpono." E like me ka lohi i ka HLS, ʻaʻole hiki ke hoʻemi ʻia i ka zero, akā aia nā hopena ma ka mākeke e hiki ke hōʻemi nui i ka lohi.
ʻoki maikaʻi
ʻO kekahi hemahema o ka mīkini ʻo ia ka hoʻohana ʻana i nā faila liʻiliʻi no ka hoʻoili ʻikepili. Me he mea lā he aha ka hewa o kēia?
ʻO ka mea i hoʻāʻo e kope i ka helu nui o nā faila liʻiliʻi mai kekahi ʻaoʻao a i kahi ʻē aʻe, ua ʻike paha ʻo ia he haʻahaʻa loa ka wikiwiki o ke kākau ʻana o ia hoʻonohonoho ma mua o hoʻokahi faila nui o ka nui like. A piʻi nui ka ikaika o ka loaʻa ʻana i ka paʻa paʻa, kahi i hoʻopilikia maikaʻi ʻole i ka hana o ke kamepiula holoʻokoʻa. No laila, ʻo ka hoʻouna ʻana i ka ʻikepili wikiō ma nā puʻupuʻu liʻiliʻi 10 kekona e kōkua pū i ka hoʻonui ʻana i ka latency engine.
E hōʻuluʻulu pōkole kākou i nā pono a me nā pōʻino o ka ʻenehana HLS.
Nā pōmaikaʻi o ka HLS:
- Hiki ke hana me kekahi mea hana. Hiki iā ʻoe ke nānā i nā wikiō ma nā ʻaoʻao o kēia wā, inā he atamai, papa, pona a i ʻole PC desktop. ʻO ka mea nui, ʻo ka polokalamu kele pūnaewele he mea hou a paʻa me HTML5 a me Media Source Extensions.
- ʻOi aku ka maikaʻi o ke kiʻi. ʻO ka hana hoʻoili data adaptive i hoʻohana ʻia e hiki ai iā ʻoe ke hoʻololi i ka maikaʻi o ka wikiō i hoʻouna ʻia ma muli o ka bandwidth o ka pili pūnaewele, ʻoiai ke hoʻoikaika nei ka algorithm e mālama i ka maikaʻi loa.
- ʻAʻole pono ka hoʻonohonoho paʻakikī o nā mea hoʻohana.
keakea:
- Kākoʻo kaupalena no ka hana ʻana me ka ʻenekini ma kekahi mau mea hana.
- Hoʻopaneʻe kiʻekiʻe i ka lawe kiʻi.
- ʻO ka piʻi nui o ka overhead a me ka paʻakikī o ka hoʻonui ʻana ma muli o ka hoʻohana ʻana i nā faila liʻiliʻi. Ma muli o ke ʻano o ka ipu, ʻaʻole hiki iā mākou ke loaʻa kahi latency haʻahaʻa ma mua o ka nui o ka ʻāpana.
Ua ʻoi aku ka maikaʻi o ka HLS ma mua o kāna mau pono no mākou a koi iā mākou e ʻimi i nā koho ʻē aʻe.
He aha ka WebRTC

()
Ua hoʻomohala ʻia ka paepae WebRTC e Google i ka makahiki 2011 e hoʻouna i nā wikiō wikiō a me nā ʻikepili leo ma waena o nā polokalamu kele pūnaewele me ka liʻiliʻi liʻiliʻi. No kēia, hoʻohana ʻia ka protocol UDP maʻamau a me nā algorithm mana kahe kūikawā. I kēia lā he papahana open source, mālama ʻia e Google a ke kūkulu ʻia nei.
ʻO WebRTC kahi pūʻulu o nā ʻenehana no ka wikiō peer-to-peer a me ka hoʻouna leo. ʻO ia, no ka laʻana, hiki i nā mea hoʻohana pūnaewele e hoʻohana ana iā WebRTC ke hoʻololi pololei i ka ʻikepili i kekahi i kekahi, me ka hoʻohana ʻole ʻana i nā kikowaena mamao no ka mālama ʻana a me ka hoʻoili ʻana i ka ʻikepili. Hoʻohana ʻia nā ʻike āpau e nā mea hoʻohana hope a me nā polokalamu kelepona.
Удобство и большие возможности данной технологии по достоинству оценили разработчики всех популярных браузеров. Сегодня поддержка WebRTC реализована в Mozilla Firefox, Opera, Google Chrome (и всеми браузерами на базе Chromium), а также в мобильных приложениях под Android a me iOS.
No kona mau pono kānalua ʻole, loaʻa iā WebRTC kekahi mau hemahema koʻikoʻi.
Nā pilikia o ka koho
ʻOi aku ka paʻakikī o ka ʻenehana WebRTC ma ke ʻano o ka pilina pūnaewele ma muli o ka pili ʻana o P2P. He mea paʻakikī ke hoʻopololei, hoʻāʻo, a hiki ke hana me ka manaʻo ʻole. I ka manawa like, pono mākou e lanakila i ka NAT a me ka pā ahi, pono mākou e hōʻoia i ka hana ma nā pūnaewele kahi i kāohi ʻia ai ka UDP.
He paʻakikī loa ka hoʻohana ʻana i ka hoʻokō WebRTC a Google. Aia kekahi hui holoʻokoʻa e hāʻawi ana i nā lawelawe hui SDK. Eia kekahi, paʻakikī loa ka hoʻokō ʻana o Google e hoʻohui me kā mākou ʻōnaehana me ka ʻole o ka hoʻopili hou ʻana i ka wikiō holoʻokoʻa.
Eia naʻe, ua makemake mākou e hāʻawi i nā mea hoʻohana i ka manawa e hana me ka wikiō "ola" piha a hoʻemi i ka lag ma waena o ke kiʻi ma ka pale a me nā hanana ponoʻī. Eia kekahi, ua makemake mākou e hoʻohana i nā kāmela PTZ, kahi mea koʻikoʻi nā lohi, ʻoi aku ka ʻoluʻolu.
Ke noʻonoʻo nei i nā hoʻokō anti-lag ʻē aʻe i ka palena o ka hana a ʻoi aku ka maikaʻi o ka hana, ua hoʻoholo mākou e hoʻohana i ka WebRTC.
He aha kā mākou i hana ai

ʻAʻole maʻalahi ka hoʻokō pono ʻana i ka paepae WebRTC. Hiki i nā kuhi hewa ʻole a i ʻole ka pololei ke alakaʻi i ka lohi o ka hoʻoili wikiō ʻaʻole wale ʻaʻole i emi iho i ka hoʻohālikelike ʻia me nā paepae ʻē aʻe, akā ke hoʻonui nei.
No ka hana pono ʻana o WebRTC, ʻo ka mea mua, pono ia e hoʻokō i kahi hoʻonui ʻenehana o ka waihona no ka hana ʻana me ka wikiō pūnaewele. ʻO ia kā mākou i hana ai.
ʻO ka mea mua, ua hoʻokō mākou i kahi kikowaena protocol hōʻailona WebRTC ma luna o Websocket, a ua kau pū i kahi kikowaena hoa WebRTC ma ke ao e pili ana i ka webrtc.org SDK. ʻO kāna hana ʻo ka puʻunaue ʻana i nā kahawai wikiō i nā hoa WebRTC mea kūʻai aku ma ka ʻano H.264 + Opus/G.711 me ka ʻole o ka transcoding wikiō.
Ua koho mākou iā Websocket e like me ka protocol signaling no ka mea ua loaʻa iā ia ke kākoʻo kiʻekiʻe ma nā polokalamu kele pūnaewele kaulana a pau. Ma muli o kēia, hiki iā ʻoe ke hōʻemi nui ʻaʻole wale i ka hoʻomohala ʻana ma luna o ke poʻo, akā pale pū nō hoʻi i ka hoʻopau ʻana i ka manawa a me nā kumu waiwai ma ka hoʻopaʻa lima TCP a me TLS i hoʻohālikelike ʻia me AJAX.
ʻO ka mea ʻoiaʻiʻo, ma ka maʻamau, ʻaʻole hāʻawi ʻo WebRTC i ka protocol hōʻailona pono e hoʻonohonoho pono, mālama, a hoʻopau i ke kamaʻilio wikiō manawa maoli ma waena o ke kumu a me nā noi mea kūʻai aku.
A no ka hoʻokō kūʻokoʻa ʻana i ka ʻenehana hōʻailona, pono mākou e hoʻomohala i kā mākou kikowaena hōʻailona ponoʻī me ke kākoʻo no kekahi mau protocols pūnaewele (Websocet, WebRTC). A me ka hiki ke mālama paʻa i nā kau a me nā hoʻolaha i ka manawa maoli, ka hoʻokele wikiō a me nā mea hou aku.
Ua lanakila mākou i nā palena o P2P ma o ka hōʻemi ʻana i ka latency ʻaʻole ma o P2P, akā ma o ka UDP a me ka mana kahe e hoʻemi ana i ka latency. Hoʻokumu pū ʻia kēia i loko o WebRTC, no ka mea, ʻo ka hihia hoʻohana nui he mau kamaʻilio p2p ma o ka polokalamu kele pūnaewele.
I loko o ka mea kūʻai kelepona, ua hoʻokō mākou i ka mea pāʻani me ka webrtc.org SDK, ʻoiai ʻo ia wale nō ka hoʻokō pono ʻana i ka mana kahe, loaʻa nā papahana Forward Error Correction (FEC) āpau i ʻike ʻia, a hoʻokō pono i ke ʻano no ka hoʻouna ʻana i nā ʻeke no nā polokalamu kele pūnaewele āpau. He mea nui nō hoʻi ke kūkulu ʻia nei ka webrtc.org SDK e Google.
He aha ka hopena o ka hoʻokō ʻana i ka WebRTC?
No ka nānā ʻana i nā wikiō ola mai nā kāmela, ua hoʻohui mākou i kahi mea pāʻani i hoʻopaʻa ʻia ma muli o WebRTC i kāu moʻokāki pilikino. Hāʻawi ia i ka wikiwiki o ka hoʻouka wikiō a hoʻopau loa i ka pilikia o ka hōʻiliʻili latency i ka piʻi ʻana o ka manawa nānā.
Ma hope o ka hoʻokomoʻana i ke kākoʻo WebRTC i ka lawelawe kapuaʻi Ivideon, hiki iā mākou ke'ōlelo me ka hilinaʻi piha e hiki i kā mākou mau mea kūʻai ke nānā i nā wikiō ola piha. I kēia manawa ʻaʻole ʻoi aku ka lōʻihi o ka hoʻolaha ʻana i nā kaʻina wikiō ma mua o hoʻokahi kekona! No ka hoʻohālikelike, hāʻawi ka mīkini HLS mua i ka hāʻawi wikiō me ka lohi o 5-7 kekona. He mea nui loa ka ʻokoʻa o ka wikiwiki hōʻike wikiō, a ʻike koke ka mea hoʻohana iā ia ma hope o ka hoʻomaka ʻana e hana me kā mākou lawelawe wikiō.
E like me kā mākou i manaʻo ai, ua hoʻomaikaʻi ka hoʻokō ʻana o ka mea pāʻani hou i ka pane ʻana o PTZ a me ke kamaʻilio leo me ke kāmela.

Hoʻokahi wale nō wahi maʻalahi a mākou e makemake ai e huki i ka manaʻo. Ke hana nei ka mea pāʻani WebRTC hou ma ke ʻano hoʻāʻo. A ʻo ia ke kumu ʻaʻole hiki iā mākou ke ʻae iā ia no kā mākou mea kūʻai aku ma ka paʻamau. Akā hiki iā ʻoe ke hoʻāla iā ʻoe iho ma ka ʻae ʻana i ka mea pili i nā hoʻonohonoho kamera (e hana i kēia, hele i ).
Nā hiʻohiʻona o ka hoʻokō ʻana o WebRTC i ka lawelawe Ivideon

He ʻenehana hoʻokolohua ʻo WebRTC i kēia manawa. ʻAʻole i hoʻokō pono ʻia kāna kākoʻo ma nā polokalamu kele pūnaewele a me nā mea hoʻohana, ʻaʻole hoʻi i nā kāmera āpau.
ʻO kēia ke kumu ʻaʻole mākou i hana i ka mea pāʻani WebRTC i mea paʻamau no nā mea hoʻohana āpau.
I kēia manawa, paipai mākou e hoʻohana i ka WebRTC wale nō ma nā polokalamu kele pūnaewele Google Chrome. Kākoʻo nā mana hou loa o Firefox a me Safari i kēia ʻenehana, akā naʻe, ʻaʻole paʻa.
ʻAʻole mākou i hoʻokō i ke kākoʻo WebRTC no nā polokalamu kele pūnaewele ma nā polokalamu kelepona. I kēia manawa, inā ʻoe e komo mai kahi polokalamu kelepona a hoʻā i ka WebRTC, ʻaʻole e holo kēia ʻano. Eia naʻe, loaʻa ka WebRTC i kā mākou mau polokalamu kelepona no и .
A i ka hoʻopau ʻana i ka moʻolelo e pili ana i nā hiʻohiʻona o ka hoʻokō WebRTC i kā mākou lawelawe, e nānā kākou i ʻelua mau kikoʻī maʻalahi.
ʻO ka mea mua, pili ka ʻenehana i ka hoʻolaha ʻana i ke wikiō ola i ka manawa maoli. No laila, inā ʻaʻole lawa ka bandwidth o kāu kahawai e hoʻouna i ke wikiō, e ʻike ʻoe i ka hāʻule ʻana o ka frame (me ka HLS e ʻike ʻoe i ka nalo ʻana o ka wikiō a me ka hoʻonui ʻana i ka latency, akā ʻaʻohe hāʻule o ka frame), akā e hoʻolaha ʻia ke wikiō ma ke ʻano maoli. manawa.
ʻO ka lua, ʻoiai ua hoʻolālā ʻia ka ʻenehana e hana pono me ka wikiō ola i ka manawa maoli, ʻaʻole mākou e hoʻohana ia mea e hana me ka ʻikepili wikiō i hoʻopaʻa ʻia.
Nā hoʻololi ʻē aʻe i ka lawelawe
I kēia manawa, ʻaʻole pili hou ʻo Flash i ka mīkini koho koho. Hiki iā ʻoe ke hoʻohana i kēlā mea pāʻani, akā no ka hana ʻana i kēia pono ʻoe e koho me ka lima i ka moʻokāki a i ʻole nā hoʻonohonoho kamera. ʻAʻole kēia he hoʻohanohano i ke ʻano, ʻo ia wale nō e like me nā helu o kā mākou lawelawe, ʻaʻohe mea hoʻohana i koe e hana pū me Flash. A ke ho'āʻo nei e hoʻoholo inā kākoʻo ka polokalamu kele pūnaewele iā ia, nalowale mākou ma kahi o 2 kekona o ka manawa makamae.
Eia kahi hiʻohiʻona pōkole o nā loli e kali nei iā ʻoe i kā mākou ʻōnaehana wikiō wikiō a me ka moʻokāki pilikino. E noho pū me mākou a hahai i ka nūhou!
Source: www.habr.com
