Wasifu Sifa Uchambuzi

Protocol rtmp port 1935. Utangazaji mtandaoni kupitia Nginx-RTMP: mapishi kadhaa yaliyotengenezwa tayari

Utiririshaji wa video wa moja kwa moja ni jambo kubwa sana. Je, ni nini kinachoweza kuwa rahisi kuliko kuendesha programu ya kutiririsha moja kwa moja papo hapo kwenye simu yako mahiri? Itakutangaza moja kwa moja au tukio linalofanyika karibu nawe... Na unapotiririsha video, marafiki zako wanaitazama kutoka kwenye vifaa vyao vya mkononi. Na unachohitaji kufanya ni kamera na kipaza sauti iliyojengewa ndani kwenye simu yako mahiri... Je! hii si ya kufurahisha?

Utiririshaji wa moja kwa moja umeanzisha njia tofauti kwa watumiaji kuungana na marafiki zao na chapa kujihusisha na kufikia wateja wao.

Lakini ni jinsi gani biashara yako au kampuni inayoanzisha inaweza kutekeleza kwa urahisi utiririshaji wa moja kwa moja kwa Android bila kuweka rasilimali na saa nyingi za kazi ya wasanidi kuifanya? Ni teknolojia gani inayosimama nyuma ya utangazaji wa moja kwa moja na kuifanya kuwa ya kweli?

Hebu tuchimbue mada ili kupata majibu ya kina kwa maswali haya na pia tujifunze zaidi kuhusu suluhu zilizo tayari kutumia ambazo hurahisisha na kuharakisha mchakato wa kuongeza kipengele cha kutiririsha video moja kwa moja kwenye programu yako.

Je, ni sifa gani za utiririshaji wa moja kwa moja

Tofauti na umbizo la video linapohitajika ambalo linadhania kuwa mtumiaji anaweza kuchagua na kutazama video wakati wowote, video za matangazo ya moja kwa moja huunganishwa kwa wakati maalum na huonyeshwa wakati wa kurekodi.

Na hivi ndivyo mchakato wa utiririshaji wa moja kwa moja unavyoonekana. Video na sauti zote huhamishwa kupitia ujumbe ambao kicheza video na kubadilishana seva ya media. Kicheza video huunganisha kwenye seva ya midia kwanza. Seva huhamisha sehemu ya video kwa kichezaji. Kipande hiki cha video kinalingana na muda wa sasa wa kucheza. Bafa ya sekunde kadhaa huhakikisha uchezaji wa video bila kuchelewa au kukatizwa. Utaratibu huu unarudiwa mara kwa mara wakati utangazaji wa wavuti unadumu.

Lakini utiririshaji wa moja kwa moja hauhamishi faili za midia kwa ujumla (hivyo kuhifadhi kipimo data). Badala yake, imewezeshwa kupitia seva za midia zinazowajibika kwa kuhamisha na kutiririsha video, sauti na data dijitali. Utiririshaji wa moja kwa moja hutoa ulinzi kwa chanzo cha faili za video kwa sababu haziwezi kunakiliwa kwa kompyuta ya mtazamaji. Kwa usaidizi wa programu ya ziada, utiririshaji wa moja kwa moja pia unaweza kutumia gumzo la moja kwa moja na Maswali na Majibu.

Hakuna umbizo moja pekee ambalo lipo ili kusambaza data ya midia. Badala yake, unaweza kuchagua ile inayofaa mahitaji yako ya kiufundi vyema zaidi.

Je, ni teknolojia gani za utiririshaji video zilizopo?

Kuna njia nyingi za kuwezesha utangazaji wa moja kwa moja kwenye programu yako. Tuta muhtasari wa teknolojia zilizopo hapa chini. Kwa njia hii utaweza kutofautisha vipengele vyao muhimu na aina ya maudhui ambayo yametayarishwa vyema kuwasilisha:

  • Itifaki ya RTMP

Itifaki ya Kutuma Ujumbe kwa Wakati Halisi (au RTMP pekee) iliundwa kwa uhamishaji wa utendaji wa juu wa mitiririko ya video na sauti na ujumbe wa data wa wakati halisi kwenye wavuti. Utiririshaji wa wakati halisi unawezeshwa kwa kuanzisha muunganisho wa njia mbili kati ya seva ya Flash na Flash player.

Adobe Flash Player ndio kiteja cha kawaida cha RTMP kinachoauni uchezaji wa video na sauti. Kwa sasa inapatikana kama vipimo vya chanzo huria kwa ajili ya ukuzaji wa bidhaa na teknolojia ambayo hutoa mitiririko ya video katika miundo ya AMF, SWF, FLV na F4V (inayotangamana na umbizo la Adobe Flash Player) na sauti katika AAC na MP3.

  • Itifaki za utiririshaji zinazotegemea HTTP (HLS na HDS)

Umbizo la HLS linatokana na MPEG2-TS na linahusu kutiririsha kwenye vifaa vya iOS. Sio sehemu ya HTML5. HLS huchanganya mitiririko mingi na maelezo ya metadata na kubadilisha kwa urahisi kati ya data tofauti za midia.

HDS hutumia umbizo la Adobe kwa video na kutoa vipande vya faili za MPEG-4. Umbizo la MPEG huruhusu kuhifadhi metadata na mitiririko ya sauti na video katika maeneo tofauti. Utiririshaji wa HTTP Dynamic ni teknolojia rahisi kwa maktaba kubwa za media. Husaidia kupunguza kipimo data, huokoa maisha ya betri na hutoa hali bora ya utumiaji ikilinganishwa na HLS.

  • Itifaki ya utiririshaji ya Silverlight

Umbizo hili la utiririshaji wa video hutumika kwa programu nyingi za Mtandao kama vile Adobe Flash na kuendesha filamu. Licha ya Microsoft Silverlight haifanyi kazi tena katika kivinjari cha Chrome, inapatikana katika Internet Explorer na Mozilla Firefox.

  • MPEG-DASH

MPEG-DASH hutoa utiririshaji wa video wa moja kwa moja na unapohitajika kwa midia kutoka kwa seva za HTTP. Umbizo huruhusu kuongeza matangazo kati ya sehemu za video kwa aina zote mbili za utiririshaji. Maudhui ya midia husimbwa kwa njia fiche mara moja na kuwasilishwa kwa kompyuta ya mteja kwa usaidizi wa mifumo tofauti ya DRM (Usimamizi wa Haki za Dijiti).

  • Utiririshaji wa upakuaji unaoendelea

Kwa upakuaji unaoendelea, maudhui ya midia huhamishwa kutoka kwa seva hadi kwa kompyuta ya mteja kupitia itifaki ya HTTP. Haihitaji seva yoyote ya utiririshaji kwa kupangisha faili au kupakua faili ya midia ili kuitazama. Upakuaji unaoendelea huwezesha uchezaji wa video kabla ya upakuaji kamili wa video.

Kuongezeka kwa video za 4K, matarajio ya juu ya mtumiaji ya viwango vya ubora na uzoefu laini, uundaji wa mifumo mipya bora na muunganisho wa haraka wa Mtandao hufanya mahitaji ya umbizo la utiririshaji wa video kuwa kali zaidi. Bila kujali aina mbalimbali za teknolojia zinazopatikana, tutazingatia RTMP kama mojawapo ya itifaki zinazoenea na zinazopendwa zaidi za utiririshaji kati ya wasanidi programu.

Kwa hivyo, itifaki ya RTMP ni nini na kwa nini ni nzuri sana

Imeundwa na Macromedia (ambayo kwa sasa ni Adobe), Itifaki ya Kutuma Ujumbe kwa Wakati Halisi huhakikisha utiririshaji wa kasi wa kasi (ABS). Wakati kipimo data kinapobadilika, ubora wa video huifikia kiotomatiki. RTMP inategemea Itifaki ya Udhibiti wa Usambazaji (TCP) ambayo hutanguliza udumishaji wa muunganisho thabiti na utulivu wa chini. Kuhusu aina ya maudhui, RTMP inaruhusu kusambaza data ya midia iliyorekodiwa na ya moja kwa moja na habari ya maandishi.

Zaidi ya hayo, RTMP inaweza kutumika sio tu kwa utiririshaji wa rununu. Seva ya RTMP inaweza kutuma data ya midia kwa programu tumizi za wavuti na pia kwa vifaa vya rununu.

Mara nyingi husifiwa kwa faida zifuatazo hutoa:

  • Imeboreshwa mahususi kwa utiririshaji wa moja kwa moja

Faida kuu ambayo RTMP hutoa ni uboreshaji wa usambazaji wa data ya video na sauti. Kwa utiririshaji, hutumia mlango wa kipekee wa 1935 ambao unafaa kwa uwasilishaji wa maudhui ya muda wa chini ambao ni muhimu kwa utiririshaji wa moja kwa moja na hauhitaji kuakibisha.

  • Ni teknolojia iliyokomaa

RTMP imetumika kutiririsha moja kwa moja kwa zaidi ya miaka 10. Kwa msanidi programu, kusanidi Seva ya RTMP ni kazi rahisi. Kwa mtumiaji, utiririshaji wa video umewezeshwa katika miundo tofauti kwa wakati mmoja. Vipengele vya usalama kama vile uthibitishaji wa Mchezaji hutumika pia.

  • Unaweza kutazama sehemu yoyote ya video inayotangazwa

Seva zote za RTMP huruhusu kurekodi mitiririko ya media inayoingia na kutoa uwezo wa kuonyesha video tangu mwanzo. Mtumiaji anaweza kuruka sehemu za video hadi wakati wa sasa wa utangazaji. Kipengele hiki ni muhimu hasa kwa video ndefu (zaidi ya dakika 10), kuruhusu kubadili kwa urahisi sehemu yoyote yake.

  • Ni itifaki maarufu zaidi ya utiririshaji wa wakati halisi

RTMP ni itifaki inayojitegemea ya jukwaa ambayo haihitaji utegemezi wa maunzi na inaoana na Windows, Mac, Linux, Android, iOS na Windows mobile. Pia hutumiwa sana katika vifaa vya michezo ya kubahatisha, kama vile PlayStation, Xbox One, na PS Vita.

Jinsi RTMP inavyofanya kazi

Kwa maneno rahisi, utiririshaji wa RTMP una vyombo vitatu vifuatavyo:

  • Mteja anayeunda mtiririko wa media na kutangaza kwa itifaki ya RTMP kwa seva. Kama "wachapishaji" wa mteja, unaweza kutumia programu nyingi kwenye mifumo tofauti, kama vile vichezaji vya FFMPEG, VLC Player, wateja wa YouTube, na suluhisho la msingi la AVLib.
  • Seva ambayo inashughulikia mtiririko unaoingia na kufanya usindikaji na kurekodi inapohitajika. Seva pia hutoa matangazo kwa wateja wengine. Miongoni mwa seva, chaguo bora zaidi zitakuwa Wowza Media Server, Flussonic Media Server, na Rahisi RTMP Server.
  • Watazamaji wanawakilisha mteja yeyote anayeweza kutazama mitiririko iliyochapishwa. Kwa kuonyesha mitiririko kama hii ya media, unaweza kutumia kichezaji chochote kinachoauni itifaki ya RTMP. Habari njema ni kwamba takriban wachezaji wote wanaotumika sasa kwa majukwaa yote yaliyopo wanaunga mkono mitiririko ya RTMP. Unaweza kuchagua Flash Player, VLC, au Media Player Classic.

Programu ngumu zaidi na zinazotumia rasilimali nyingi ni programu za utangazaji. ‘Mtiririko wa utangazaji’ unajumuisha uchakataji wa midia, kuchanganya, kusimba na kutiririsha zaidi itifaki ya RTMP hadi kwa seva. Inategemea sana jukwaa na vifaa na inahitaji rasilimali nyingi za kusaidia.

Ili kusambaza data nyingi iwezekanavyo kwa itifaki ya RTMP, video na sauti hugawanywa katika vipande vya ukubwa tofauti. Ukubwa chaguo-msingi ni baiti 64 kwa sauti na ka 128 za video. Ukubwa wa sehemu za video huamuliwa na umbizo la mwingiliano kati ya mtumiaji na seva.

Visehemu vya maudhui basi huchanganyika na kuzidishwa kwa muunganisho mmoja huku vikihusishwa na kipimo data na muda wa kusubiri wa kituo. Mtiririko unaotoka kwa mtangazaji hadi kwa seva una vizuizi vidogo vya data ambavyo vinajumuisha aina tofauti za data (yaani, video, huduma ya sauti, n.k.). Utiririshaji wa RTMP unaweza kwa wakati mmoja kuhamisha vizuizi kadhaa tofauti vya data, kwa hivyo kujumuisha video na sauti na kuwezesha simu za utaratibu wa mbali.

Wakati mteja anafungua mtiririko katika kicheza RTMP, ombi hutumwa kwa Seva ya RTMP. Kipindi kinaanzishwa na ubadilishanaji wa data wa huduma hutokea. Mara tu kichezaji RTMP cha mteja kinapopokea sehemu inayohitajika ya pakiti za data za huduma kuhusu mtiririko unaoendelea, huanza kusimbua, kuakibisha na kuonyesha utiririshaji wa media wa RTMP.

Kwa RTMP, midia haihitajiki kuhifadhiwa katika hifadhi yoyote ya muda. Inaendelea kutiririka moja kwa moja kati ya wateja na seva. Ikiwa uwezo wa kipimo data unaruhusu, mtiririko huo unaelekezwa kwa wateja wengi wanaotuma maombi. Uwezo wa utiririshaji unaboresha ikiwa seva kadhaa za media zitawekwa kwenye mtandao. Mchakato wa kutiririsha unaendelea hadi seva au mchezaji amalize kipindi.

Unawezaje kutumia RTMP kutiririsha video katika programu yako ya Android?

Unaweza kutazama mtiririko wa RTMP kwenye jukwaa lolote kwa usaidizi wa mchezaji yeyote anayetumia itifaki ya RTMP. Kwa Android, wachezaji wa wahusika wengine maarufu zaidi ni MX, VLC, na BS Players pamoja na mchezaji mwingine yeyote anayetumia FFMPEG. Kwa kutazama RTMP kutoka ndani ya programu, msanidi anahitaji kuunganisha maktaba yoyote ya kichezaji ambayo inaweza kusoma mitiririko ya RTMP. Hizi ni ijkPlayer na VLC SDK.

Timu ya Onix imetoa mchango wao wa kiteknolojia katika kutafuta suluhisho rahisi na zuri la utiririshaji wa video na wameunda AVLib, maktaba yake ya nje ya Onix ya utiririshaji wa Android RTMP.

Hebu tuone jinsi inavyofanya kazi na utangazaji wa moja kwa moja wa programu za Android na jinsi wazo hilo lilivyotokea.

Jinsi AVLib hutatua tatizo la msingi la utiririshaji wa Android RTMP

https://rtmplib-android.com/

Timu yetu ya wasanidi programu wa Android imekuja na wazo la AVLib karibu kwa bahati mbaya, lakini kwa matokeo na athari nzuri. Walipokuwa wakifanya kazi ya kuongeza kipengele cha kutangaza video na sauti za vifaa vya Android kwenye seva za RTMP, walikumbana na tatizo kubwa. Mahitaji ya mteja yalisema kuwa programu inapaswa kuwa na uwezo wa kutiririsha data ya video na sauti katika uwezo wake wa juu zaidi kupitia kamera ya Android. Ilihitajika pia kuwezesha utumiaji wa Android 4.0 kama toleo la chini zaidi, kwa watumiaji walio na vifaa vya zamani vya rununu wangeweza kuitumia, na kumiliki mipangilio kadhaa ya utumiaji inayofaa kwa mtumiaji.

Timu ya Onix imefanya utafiti wa kina na kulinganisha maktaba zilizopo za kibiashara na za chanzo huria. Lakini bila matokeo ya kuridhisha. Ilibainika kuwa hakuna suluhisho kama hilo sokoni ambalo lingeweza kukidhi mahitaji yetu ya kiufundi kwa njia kamili. Wanatimu walifikia uamuzi haraka wa kuunda maktaba yao ya nje ambayo inaweza kusaidia utiririshaji wa RTMP kwa Android. Na kwa sababu kuna idadi kubwa ya vifaa vya Android na matoleo ya Mfumo wa Uendeshaji yanayotumika kwa sasa, maktaba hii iliundwa ili kusaidia mahitaji ya utiririshaji ya watumiaji wote wa sasa wa Android.

Lakini haina mantiki kutumia wakati kuunda zana ya wakati mmoja ambayo husuluhisha kazi moja madhubuti kwa kiwango kinachohitajika. Namna gani ikiwa hali kama hiyo inarudiwa? Kwa nini usitumie teknolojia bora zaidi ya kutoa na kuunda bidhaa ya programu iliyojaribiwa vizuri?

Tulinuia kutengeneza suluhisho la kifahari, linalonyumbulika na rahisi, ili timu nyingine yoyote ya Android ya mtu mwingine au msanidi programu ambaye alikuwa akitafuta maktaba ya RTMP angeweza kuiunganisha kwa urahisi kwenye programu bila kulazimika kuanzisha upya gurudumu. Na tulifanya hivyo! AVLib inachanganya vipengele vyote tulivyotarajia na kutatua kwa ukamilifu kazi ya msingi ya utangazaji wa video.

Jinsi AVLib iliundwa na kwa nini ni maktaba ya kuaminika ya RTMP

AVLib ni maktaba ya RTMP ambayo tunajivunia sana. Ni bidhaa ya programu ambayo hutatua mahitaji ya mteja ya utiririshaji wa moja kwa moja wa kiwango chochote cha utata. Ni zana iliyo tayari kutumika ya Studio ya Android ambayo imeunganishwa kwenye programu ya simu mara moja.

AVLib inawakilisha suluhisho rahisi na thabiti ambalo linategemea kanuni zifuatazo:

  • Ushirikiano rahisi na programu

Kwa msanidi wa Android, itachukua kama saa moja kukamilisha mchakato wa kuunganishwa kwa AVLib na kuongeza kipengele cha kutiririsha moja kwa moja kwenye programu.

  • Kiwango cha juu cha uwezo

Ili kutekeleza maktaba ya RTMP na kuiwezesha kwa uwezo wa juu, timu yetu ilichagua lugha ya programu C. Kila chaguo la kukokotoa lililojumuishwa kwenye AVLib, kuanzia mantiki ya kisafirishaji, kuweka misimbo, kufanya kazi na RTMP na hadi kuchakata, vilijengwa kwa kutumia C safi.

  • Maktaba iliyoundwa maalum ya UI

AVLib inaweza kunyumbulika na inaweza kurekebishwa kwa urahisi kulingana na mahitaji ya mteja katika muundo wa kiolesura (yaani, vitufe, maandishi) na mipangilio ya video (yaani, azimio la fremu, sauti, ubora wa kodeki, biti).

  • Usaidizi wa aina zote zilizopo za vifaa vya Android

Maktaba hii ya RTMP inakuja kama faili moja ya .aar isiyo na vitegemezi. AVLib ilijaribiwa ili kuhakikisha kuwa inatumika na vifaa mbalimbali vya Android na inaauni toleo la 4.0 la Android OS na matoleo mapya zaidi.

Unaweza kupata maelezo zaidi kuhusu vipengele vya AVLib.

Mchakato wa uundaji wa AVLib ulijaa changamoto na ulihitaji mawazo na bidii kutoka kwa timu yetu ya Android.

  • Utiririshaji kutoka kwa kamera za vitendo? Ndiyo!

Mojawapo ya vipengele maalum vya AVLib ni uwezo wake wa kutiririsha video na sauti kutoka kwa kamera za vitendo kwa kuruka. Ili kuwezesha kipengele hiki, unahitaji kufanya kazi kwa wakati mmoja na violesura viwili vya mtandao kwenye upande wa moduli katika C. Kazi ilikamilishwa kwa mafanikio lakini ilihitaji utafiti wa kina wa msimbo wa chanzo wa Android OS na utatuzi unaoendelea.

  • Kuunda mzunguko wa maisha ya utangazaji

Changamoto nyingine kubwa ambayo tulikumbana nayo wakati wa awamu ya ukuzaji ilikuwa kuwezesha kazi laini na kamera na usindikaji wa mzunguko wa maisha kwenye vifaa tofauti. Hiyo ilikuwa badala ya muda mwingi na ilihitaji kazi nyingi za kuchunguza.

Hapo awali, RTMP (Itifaki ya Kutuma Ujumbe kwa Wakati Halisi) iliundwa na Adobe Systems kwa ajili ya kusambaza mitiririko ya sauti na video, ujumbe wa maandishi na data nyingine kwenye wavuti. Kanuni kuu ya kazi yake iko katika kuanzisha mwingiliano kati ya seva na Flash Player ya mtumiaji. RTMP inategemea TCP, ambayo ina maana kwamba kipaumbele chake cha juu kinategemea kudumisha muunganisho thabiti na kutoa mwingiliano wa chini wa kusubiri. Ili kutangaza mitiririko laini na kusambaza data nyingi iwezekanavyo seva ya RTMP inagawanya habari katika vipande. Kisha, ukubwa wa vipande hufafanuliwa kutokana na muundo wa mwingiliano kati ya mtumiaji na seva.

Kinachovutia zaidi kuhusu RTMP ni kwamba inahusisha chaneli tofauti pepe, ambazo husambaza pakiti za data wakati wa kipindi kimoja cha media. Vituo hivi vinaweza kujumuisha: chaneli ya maombi ya RPC na matokeo yake, moja ya ujumbe wa kudhibiti, chaneli za utiririshaji wa sauti na video. Zaidi ya hayo, wanaweza kufanya kazi kwa wakati mmoja bila kusababisha masuala yoyote ya kiufundi kwa kila mmoja.

RTMP dhidi ya RTSP

Kwa upande wa kusambaza data, kuna itifaki nyingine inayojulikana inayoitwa RTSP. Kwa hiyo, hebu tuangalie tofauti kati ya itifaki za RTMP na RTSP.

Kusudi kuu la RTSP (Itifaki ya Utiririshaji wa Wakati Halisi) ni kudumisha shughuli za seva za utiririshaji. Zaidi ya hayo, itifaki hii huanzisha mwingiliano kati ya mteja na seva. RTSP huwezesha watumiaji wa mwisho kudhibiti kipindi cha midia kwa njia ya amri rahisi kama vile kucheza, kusitisha na kuacha. Zaidi ya hayo, inaruhusu wateja kutazama video kutoka kwa kipande chochote bila kusubiri upakuaji kamili.

RTMP, kwa upande wake, pia hudumisha vipengele vilivyotajwa hapo juu. Hata hivyo, seva ya RTMP, kwa kutumia itifaki ya RTMP, inaweza kufuatilia kila hatua inayochukuliwa na mteja kuanzia wakati anapoanzisha kipindi hadi kipindi kimefungwa. Kwa njia hiyo, hufanya ripoti ndani ya RTMP kuwa sahihi zaidi na hutoa picha kamili ya shughuli za mtumiaji wakati wa kipindi fulani cha midia. Vile vile RTMP, RTSP ina uwezo wa kutiririsha moja kwa moja pia. Hata hivyo, maambukizi ya data ya utiririshaji sio kazi kuu ya RTSP, ndiyo sababu, kwa kusudi hili inahitaji itifaki zingine za ziada.

Inavyofanya kazi

Kanuni ya kazi ya RTMP ni rahisi. Ili kuanzisha mtiririko wa RTMP, inatosha kuanzisha mwingiliano kati ya seva ya RTMP na kicheza RTMP cha mteja. Mara tu mawasiliano haya yanapowekwa, seva huanza kusambaza midia kama mtiririko wa mara kwa mara wa baiti. Mchakato huu unaendelea hadi seva au mchezaji amalize kipindi.

Jambo jema ni kwamba itifaki ya RTMP ni rahisi sana na kutoa taarifa za sauti, video na maandishi katika miundo mbalimbali ni ya uwezo wake. Kwa mfano, itifaki ya RTMP huwezesha utiririshaji wa video katika umbizo la MP4 na FLV, utiririshaji wa sauti - katika MP3 na AAC. Zaidi ya hayo, kutokana na itifaki hii, seva ya RTMP hutuma midia kwa programu za wavuti na pia kwa vifaa vya rununu. Kwa kusudi hili mtumiaji anahitaji kuwa na Flash Player iliyosakinishwa katika kivinjari au kwenye simu ya mkononi ipasavyo. Kisha, faili ya swf, ambayo ina taarifa zote za midia ya mkondo, itachezwa na Flash Player. Hata hivyo, mojawapo ya manufaa makubwa zaidi ya itifaki ya RTMP ni kwamba inaweza kutumika kwa utiririshaji wa moja kwa moja na kwa mahitaji. Hebu tuangalie kila moja ya michakato hii ya utiririshaji.

Utiririshaji wa moja kwa moja

Utiririshaji wa video wa moja kwa moja ni wa vipengele muhimu vya itifaki ya RTMP. Kwa msaada wake, unaweza kutangaza video yako moja kwa moja wakati wa mchakato wa kurekodi. Hasa, utangazaji wa moja kwa moja hutumiwa kwa hafla za michezo, maonyesho, matamasha n.k. Katika kesi hii, itifaki ya RTMP haiwezi kubadilishwa. Ina latency ya chini kutoka kwa wakati halisi katika utiririshaji, kwa kulinganisha na itifaki ya HTTP na kucheleweshwa kwake kwa zaidi ya sekunde kumi, ambayo haifai kwa utiririshaji wa moja kwa moja wa kitaalamu.

Hebu tuchunguze mfano mmoja wazi zaidi wa utendaji wa kipekee wa RTMP kwa utiririshaji wa moja kwa moja. Kwa mfano, kamera maarufu za IP zinazounga mkono itifaki ya RTMP, zimejenga vipaza sauti, hivyo huwezi tu kuona video moja kwa moja, lakini pia kushiriki katika mchakato wa utangazaji na kutoa maoni yako kwa wasambazaji.

Utiririshaji wa mahitaji

Utiririshaji unapohitajiwa huruhusu watumiaji kuchagua wakati wa kutazama maudhui yaliyochaguliwa, ambayo ni rahisi kwao badala ya kutazama maudhui haya wakati wa utangazaji wake. Kama sheria, video inapohitajika (VOD) hutumiwa kwa sababu kadhaa: kwa sababu inacheza vizuri hata kwa kasi ya chini ya muunganisho wa Mtandao, wakati idadi ya watazamaji mtandaoni sio kubwa, kwa sababu ya ubora wa HD. Kwa itifaki ya RTMP hata VOD ni bora zaidi. Kwanza kabisa, hutoa usaidizi wa multicast. Ikiwa ungependa kuwa na mtiririko mmoja ndani ya mtandao wako unaofanya kazi na uwape watumiaji wengi, ukiwa na RTMP hutahitaji kuunda miunganisho tofauti kwa kila mtumiaji. Itifaki zingine kama HTTP au CDN hazina kipengele hiki. Pia, RTMP huwezesha watumiaji kuunganishwa tena kwenye mtiririko wa video ikiwa kuna matatizo ya muunganisho. Wakati wa matatizo na muunganisho, video inachezwa kutoka kwa bafa na mtumiaji anapounganisha tena bafa huanza kujaa na kwa njia hiyo huepuka kusitisha mara kwa mara katika mtiririko wa video.

Utekelezaji wa RTMP

Ni wazi, habari hii yote inakufanya udadisi jinsi ya kutekeleza RTMP. Hii ni itifaki ya jukwaa tofauti na inafanya kazi kwenye Windows, Mac, Linux, Android, Windows Mobile, iOS. Je! una console na unafurahia kucheza michezo? Unaweza kutumia huduma za RTMP kwa urahisi kwa vifaa kama vile Xbox One, PlayStation na PS Vita.

Kwa sababu ya anuwai ya majukwaa yanafaa kwa itifaki ya RTMP, kuna chaguzi nyingi za utekelezaji wake. Zinaweza kutofautiana kutoka kwa utekelezaji wa mstari wa amri hadi utekelezaji kamili wa chanzo huria kilichoangaziwa.

Utekelezaji wa mstari wa amri

Zana ya RTMPDump inatumika kwa utekelezaji wa mstari wa amri, kwani inakabiliana kikamilifu na kurekodi mitiririko ya RTMP, utangazaji wa moja kwa moja na video inapohitajika. Kando na hilo, RTMPDump ni zana huria ambayo inaweza kutumika kwenye Linux, Android, Mac OS X, na Microsoft. Huduma hii ni maarufu sana kwa sababu ya ukubwa wake mdogo na uwezo wa kufuta RTMPE, ambayo ni RTMP iliyosimbwa, na RTMPS - RTMP salama.

Kifurushi cha RTMPDump kina programu tatu: rtmpdump, rtmpsrv, na rtmpsuck. Kila moja ya programu hizi hufanya kazi maalum. Kwa mfano, rtmpdump inatumika kwa kuanzisha muunganisho kwa seva za RTMP na kunasa mkondo yenyewe; rtmpsuck inaweza kunasa mtiririko pia, au inaweza kusaidia katika kukusanya vigezo muhimu vya rtmpdump. Kazi kuu ya rtmpsrv ni kufuatilia miunganisho na mitiririko.

Utekelezaji kamili

Ikiwa ungependa zaidi utekelezaji kamili, utahitaji vipande hivi vitatu vya programu: kisimbaji cha video cha moja kwa moja, seva ya utiririshaji wa midia na programu ya mteja wa video. Hujui ni kisimbaji kipi cha video cha moja kwa moja cha kusakinisha? Kisha, unaweza kuchagua kati ya Flash Media Live Encoder, FFmpeg, WireCast, Wowza Transcoder, Nimble Streamer Transcoder. Hata hivyo, tafadhali zingatia kwamba inayojulikana zaidi ni Flash Media Live Encoder, ambayo inapatikana kwa kupakuliwa bila malipo kwenye tovuti ya Adobe.

Kuhusu programu ya mteja wa video, Adobe Flash Player ndiyo lahaja inayopendekezwa zaidi. Ni kicheza RTMP bila malipo na hufanya kazi kama programu-jalizi kutoka kwa kivinjari au hata kifaa cha rununu. Flash Player inafaa kwa Windows, OS X, Chrome OS, na Linux. Chaguo mbadala ni Gnash na VLC kicheza media. Wote wawili ni wachezaji wa media wazi. Gnash ana nafasi zote za kubadilisha Flash Player katika utiririshaji wa RTMP kwenye Linux. Kicheza media cha VLC, kwa upande wake, si cha ulimwengu wote, kwani kinaweza kudumisha mitiririko ya RTMP kwa sehemu tu.

Seva za RTMP kama vile Adobe Flash Media Server, Wowza Streaming Engine, Flussonic Media Server zinadaiwa kuwa nzuri sana. Walakini, unaweza kusakinisha seva ya RTMP ya bure kama Nginx iliyo na RTMP Moduli au Red5, ambayo pia ni seva ya RTMP ya chanzo wazi kwenye Java.

Jinsi ya kushughulikia maswala ya mara kwa mara na itifaki ya RTMP

Itifaki ya RTMP, licha ya faida zake zote dhahiri, pia ina shida kadhaa. Kwa sababu ya ukweli kwamba inatofautiana sana na itifaki ya HTTP, haijaimarishwa na HTML5. Zaidi ya hayo, itifaki ya RTMP inafanya kazi vibaya kwenye iDevices na inaathiri ubora wa utiririshaji wa video. Katika hali kama hiyo, ni bora kutumia itifaki ya HLS kwenye vifaa vya Apple. Kanuni za kazi ya HLS na RTMP ni sawa, lakini, katika hali na HLS, mkondo umegawanywa katika mfululizo wa faili ndogo za HTTP. Hapo awali, itifaki hii ilitengenezwa kwa kivinjari cha Quicktime, iOS na Safari. Hata hivyo, sasa itifaki ya HLS inaweza kutumika kwenye majukwaa mengine mengi pia. Itifaki inakabiliana vyema na mapungufu ya kipimo data na hurekebisha ubora wa video ipasavyo. Kwa kuzingatia kasi ya utoaji wa video, HLS haitakuwa chaguo bora zaidi, kwani muda wake ni sekunde ishirini.

Upungufu mwingine wa itifaki ya RTMP ni kwamba iko katika hatari ya maswala ya bandwidth. Wakati mwingine, kipimo data cha chini kinaweza kusababisha kukatizwa kwa utiririshaji wa midia au hata utiririshaji huenda usianze ikiwa kasi ya muunganisho wa Mtandao haitoshi. Njia mbadala ya utangazaji na kipimo data kidogo ni kutumia Dashi. Dashi ni teknolojia ya utiririshaji inayobadilika ya biti ambayo hutoa utangazaji wa midia ya hali ya juu. Mbinu hii inaweza kutambua kipimo data cha mtumiaji fulani na kurekebisha ubora wa video ipasavyo kwa kasi ya muunganisho. Kwa kuongeza, haiwezi kufanya bila kisimbaji ambacho husimba video kwa viwango vingi vya biti. Kisha, usimbaji tofauti hubadilishwa na mchezaji kutokana na rasilimali zinazofaa. Kwa hivyo, kuakibisha kidogo kunapatikana na uzoefu mzuri wa video hupatikana. Ni vigumu kukadiria manufaa yote ya mbinu hii ya kutiririsha matukio makuu katika ngazi ya kitaifa, kwa mfano.

Upande mwingine mwingine wa itifaki ya RTMP upo katika hitaji la kusakinisha programu-jalizi ya Flash Player, bila ambayo utumaji wa media ya RTMP hautawezekana. Pia, kuna matatizo wakati wa kutumia RTMP kwa huduma za utiririshaji za CDN.

Je, bado una maswali kuhusu itifaki ya RTMP au utekelezaji wake? na tutakusaidia nayo na kuonyesha faida zake zote kwa vitendo.

Hivi majuzi nilikutana na mada "Seva ya utangazaji mtandaoni kulingana na nginx" kuhusu moduli nzuri ya Roman Arutyunyan (@rarutyunyan) ya nginx: nginx-rtmp-moduli. Moduli ni rahisi sana kusanidi na hukuruhusu kuunda seva ya kuchapisha rekodi za video na utangazaji wa moja kwa moja kulingana na nginx.

Unaweza kusoma juu ya moduli yenyewe kwenye ukurasa wake kwenye GitHub, lakini nataka kutoa chache mifano rahisi kutumia. Natumai mada hii itasaidia wapya katika utengenezaji wa video (kama mimi).

Kwa kifupi kuhusu RTMP

RTMP (Itifaki ya Kutuma Ujumbe kwa Wakati Halisi) ni itifaki ya utangazaji ya umiliki kutoka kwa Adobe. Usafiri chaguo-msingi ni TCP (bandari 1935). Inawezekana pia kujumuisha RTMP ndani ya HTTP (RTMPT). Kiteja cha RTMP kimsingi ni Adobe Flash Player.
Kodeki ya video - H.264, kodeki ya sauti ya AAC, nellymoser au vyombo vya MP3, MP4 au FLV.

Kuchapisha video

Kwa maneno mengine, video juu ya mahitaji (VOD). Iongeze tu kwa nginx.conf katika sehemu ya rtmp ( seva (... )).
maombi vod (cheza /var/videos;)

(Kumbuka: kwa kweli, sehemu sio lazima iitwe vod)
Sasa unaweza kuweka faili ya video katika umbizo sahihi katika folda ya /var/videos na "kulisha" chanzo kwa kichezaji, kwa mfano rtmp://server/vod/file.flv. Ninavyoelewa, asili ya MP4 inasaidia kurejesha nyuma video, ilhali FLV italazimika kuorodheshwa tofauti.

Tafsiri ya mtandaoni

Tunaweza kutuma utiririshaji wa video na sauti kwa seva kwa kutumia itifaki sawa ya RTMP kwa uchapishaji. Na wateja wetu wataweza kutazama matangazo. Ili kufanya hivyo, unahitaji kuongeza sehemu kwenye seva:

Programu moja kwa moja (ruhusu uchapishaji 1.2.3.4; ruhusu uchapishaji 192.168.0.0/24; kataa uchapishaji wote; ruhusu kucheza yote; moja kwa moja;)

Kwenye mashine ambayo tutatangaza, kwanza tunahitaji kupata orodha ya vifaa vya DirectShow. Anza - Run - cmd, nenda kwa ffmpeg/bin folda na uendeshe:
ffmpeg -list_devices kweli -f dshow -i dummy

Ikiwa jina la chanzo chako lina herufi za Kirusi, zinaweza kuonekana kama herufi zisizofaa. Wasimamizi wa kweli hutumia iconv, na watu wa kawaida kama mimi huamua uwongo kwenye tovuti ya Lebedev. FFmpeg" unahitaji kulisha maandishi yanayosomeka.

Sasa, ukijua jina la chanzo cha video na sauti, unaweza kuikamata kwa kutumia ffmpeg na kuituma kwa seva.

Kamera ya wavuti

Kwa uchache, unahitaji kutaja chanzo cha video, codec na seva:
ffmpeg -f dshow -i video="Webcam C170" -c:v libx264 -an -f flv "rtmp://1.2.3.4/live/test.flv live=1"

Badala ya "Webcam C170" unahitaji kubadilisha jina la kamera yako kutoka kwenye orodha.
Kubadilisha -an kunamaanisha kuwa hatutumi mtiririko wa sauti. Ikiwa mtiririko wa sauti unahitajika, safu ya kuanza itaonekana kama hii:
ffmpeg -f dshow -i video="Webcam C170" -f dshow -i audio="Makrofoni..." -c:v libx264 -c:a libfaac -ar 44100 -ac 2 -f flv "rtmp://1.2 .3.4/live/test.flv live=1"
Hapa tunatumia kodeki ya libfaac, kiwango cha sampuli 44100, chaneli 2 (stereo). Unaweza kutumia MP3 badala ya AAC (libmp3lame codec).

Kamera ya analogi

Ikiwa kamera yako ina pato la analogi, unaweza kuiunganisha kwenye kompyuta yako kwa kutumia kifaa cha kunasa. Ninatumia kamera ya bei nafuu ya PAL na bodi ya kunasa USB kutoka Dealextreme.

Ffmpeg -r pal -s pal -f dshow -i video="USB2.0 ATV" -c:v libx264 -an -f flv "rtmp://1.2.3.4/live/test.flv live=1"

Kukamata skrini

Kuna chaguo mbili hapa: kusakinisha FFSplit au tumia screen-capture-rekoda na FFmpeg.
FFSplit ni rahisi kutumia kwa sababu ina GUI ya kirafiki, lakini haifanyi kazi chini ya XP/2003.

Ukiamua kuchagua njia ya pili, basi safu ya kuanza ya FFmpeg itaonekana kama hii:
ffmpeg -f dshow -i video="screen-capture-recorder" -c:v libx264 -an -r 2 -f flv "rtmp://1.2.3.4/live/test.flv live=1"
Mtiririko wa sauti unaweza kunaswa kwa kikamata sauti-pepe.


Mfano wa kunasa skrini katika programu

Tangaza upya

Kwa kawaida, unaweza kurejesha video ya FFmpeg au faili ya sauti (au mkondo) kwa seva. Katika mfano hapa chini tunasambaza video ya MJPEG kutoka kwa kamera ya mbali:
ffmpeg -f mjpeg -i video="http://iiyudana.miemasu.net/nphMotionJpeg?Resolution=320x240&Quality=Standard" -c:v libx264 -f flv "rtmp://1.2.3.4/live/test.flv live =1"
Lakini kwa madhumuni kama haya, ni busara zaidi kutumia chaguo la kushinikiza kwenye seva ya RTMP yenyewe ili kuondoa kiunga cha kati na kuvuta mkondo kwenye seva yenyewe.


Baadhi ya kamera za wavuti nchini Japani

Tuning, kutatua matatizo

- jina lililowekwa H.264 ina seti kadhaa za mipangilio ya uwiano wa mgandamizo/kasi: haraka zaidi, haraka sana, haraka sana, haraka, haraka, wastani, polepole, polepole, polepole sana. Kwa hivyo, ikiwa unataka kuboresha utendaji, unapaswa kutumia:
-preset ultrafast
-crf nambari huathiri moja kwa moja bitrate na ubora. Inakubali maadili kutoka 0 hadi 51 - nambari ya juu, ubora wa picha hupungua. Chaguo-msingi 23, 18 - ubora usio na hasara. Kasi ya biti huongezeka takriban maradufu CRF inapopunguzwa kwa 6.

-r nambari huweka ramprogrammen za pembejeo na pato. Kwa vyanzo ambavyo unakamata picha, unaweza kuiweka badala ya -r -re kutumia FPS asili.

-rtbufsize nambari saizi ya bafa ya wakati halisi. Iwapo unapata kufurika kwa bafa kila mara na kudondosha jumbe za fremu, unaweza kuweka bafa kubwa (km 100000k), lakini hii inaweza kuongeza muda wa uwasilishaji.

-pix_fmt inabainisha mfano wa rangi. Ikiwa utaona mraba mweusi badala ya picha, lakini sauti inafanya kazi, jaribu kuweka yuv420p au yuv422p.

-s upanaxheight saizi ya picha ya pembejeo na pato.

-g nambari Ninavyoelewa, hii ndiyo idadi ya juu zaidi ya fremu kati ya fremu muhimu. Ikiwa ramprogrammen yako ni ya chini sana, unaweza kuweka thamani hii chini ili kupunguza ucheleweshaji wa kuanzisha matangazo.

-dakika_ya_muhimu nambari idadi ya chini ya fremu kati ya viunzi muhimu.

-vf "crop=w:h:x:y" punguza video

-rekebisha sifuri Chaguo la "uchawi" ili kupunguza ucheleweshaji wa matangazo. Sijapata ni nini hasa hufanya (-:

- uchambuzi 0 inalemaza uchanganuzi wa muda, ambao husaidia kupunguza kusubiri kwa matangazo

Mbali na vigezo vya sauti vilivyojadiliwa hapo juu, unaweza kuhitaji -acodec nakala ikiwa mtiririko wako wa sauti hauhitaji upitishaji wa ziada kwa MP3/AAC.

Mfano: utangazaji kutoka kwa kamera ya wavuti na utulivu wa chini bila sauti, chora wakati wa sasa juu ya picha

Ffmpeg -r 25 -rtbufsize 1000000k -uchambuzi 0 -s vga -copyts -f dshow -i video="Webcam C170" -vf "drawtext=fontfile=verdana.ttf: [barua pepe imelindwa]:fontsize=48:box=1: [barua pepe imelindwa]:text=%(localtime)" -s 320x240 -c:v libx264 -g 10 -keyint_min 1 -preset UltraFast -tune zerolatency -crf 25 -an -r 3 -f flv "rtmp://1.2.3.4:1935/ live/b.flv live=1"

Mchezaji kwenye tovuti

Kila kitu ni rahisi hapa. Sakinisha mmoja wa wachezaji maarufu kwenye tovuti yako, kwa mfano