Konferentziako protokoloa

Dokumentu honek konferentzien kudeaketarako egingo ditugun eboluzioak deskribatzea helburua du.

Definizioak

  • Ekarle: Audio eta bideoak besteentzat nahasten dituen erabiltzailea da

  • Parte hartzaile: Konferentziako erabiltzaile bakoitza, baita ostalaria ere

Erantzukizun-bazterketa

Dokumentu honek lehen urratsak bakarrik deskribatzen ditu oraingoz.

Egokitzen diren marrazkiak

  • GRID: kide bakoitza altuera/zabalera berdinarekin agertzen da

  • ONE_BIG_WITH_SMALL: kide bat zoomatuta dago eta beste aurreikuspena erakusten da

  • ONE_BIG: kide batek pantaila osoa erakusten du

Bi metodo berri daude eskuragarri konferentzia Layout kudeatzeko CallManager-en:

/**
 * Change the conference layout
 * @param confId
 * @param layout    0 = matrix, 1 = one big, others in small, 2 = one in big
 */
void setConferenceLayout(const std::string& confId, int layout);

/**
 * Change the active participant (used in layout != matrix)
 * @param confId
 * @param participantId    If participantId not found, the local video will be shown
 */
void setActiveParticipant(const std::string& confId, const std::string& participantId);

Guztia kudeatzen da conference.cpp (partehartzailea iturriekin lotzeko) eta video_mixer.cpp (nahi den diseinua emateko).

Konferentzien sinkronizazioa Informazioa

Kontuan hartu: Izan ere, parte-hartzaile hitza erabiltzen da bilera batetan nahastu den deialdietarako.

Helburua da parte hartzaile guztiei bideoaren metadata jakinaraztea.

Parte hartzaile bat bera konferentzia bada, bere sarrerako diseinuaren informazioa bateratu beharko da beste parte hartzaileei bidaltzen zaienean.

Lerroaren informazioa

Layout-a VectorMapStringString bezala gordetzen da bezeroentzat eta barnean bektore batekin, hurrengo formatuan:

Layout = {
    {
        "uri": "participant", "x":"0", "y":"0", "w": "0", "h": "0", "isModerator": "true"
    },
    {
        "uri": "participant1", "x":"0", "y":"0", "w": "0", "h": "0", "isModerator": "false"
    }
    (...)
}

Giltza posibleak:

  • Uri = kontuaren Uri

  • gailuaren identifikazioa = gailuaren identifikazioa

  • Mediak = Mediaren nortasuna

  • aktiboa = parte-hartzailea aktiboa bada

  • x = bideoan x posizioa

  • b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b) b)

  • w = bideoaren tamaina (zabalera)

  • h = bideoaren tamaina ( altuera)

  • Video mutated = bideoak mutated badago

  • audioLocalMuted = audioak tokiko mutua baldin badago

  • audioModerator Muted = audioak moderatzaileek mutatzen badute

  • Moderatzailea = Moderatzailea bada

  • Eskua altxatuta = eskua altxatuta badago

  • ahots-jarduera = korronteak ahots-jarduera baldin badu

  • grabatzea = elkarrizketa grabatzen ari bada

API berria

Metodo berri bat (CallManager-en) eta seinale berri bat daude eskuragarri, hurrenez hurren, konferentzia-informazioa eta eguneratzeak lortzeko:

VectorMapStringString getConferenceInfos(const std::string& confId);

void onConferenceInfosUpdated(const std::string& confId, const VectorMapStringString& infos);

Conference Object-ek (deiak nahasten baditugu soilik existitzen da, hau da, gu gara nagusiak) jardunaldia osatzeko informazioa kudeatzen du, Call objektu bakoitzaren LayoutInfos-en arabera.

Beraz, Call objektu bakoitzak LayoutInfo bat du eta eguneratzen bada, eskatu Conference objektuari bere informazioa eguneratzeko.

Konferentziako nagusiak bere informazioa bidaltzen du SIP kanalaren bidez, mezu gisa, MIME motako mezu hauekin: application/confInfo+json

Dei batek informazio konfidentziala jasotzen badu, badakigu dei hau konferentzia bateko kidea dela.

Laburbilduz, Call jasotako kokapenak kudeatzen ditu, Conference-managed sented layouts.

Konferentziaren egoera aldatzea

Konferentziaren egoera aldatzeko, parte-hartzaileek aginduak bidali behar dituzte, anfitrioiak kudeatuko dituenak.

Protokoloak beharrak ditu:

Konferentziaren hiru mailak parte-hartzaile bat definitzen dute:

  • Parte hartzailearen nortasuna duen kontua

  • Gailuak, kontu bakoitzak gailu anitzetan sar daitekeelako

  • Mediak, bideoklip ugari egon daitezkeelako gailu bakoitzeko (adibidez, kamera bat eta pantaila bat partekatzea)

Banderadura aurrezteko, bezeroek hainbat eskaera aldi berean bidali beharko lituzkete.

Ekintza orokorrak

Moderatzaileak «application/confOrder+json» bidaltzen du, eta hau da: non 0 sarraila den, 1 erabiltzaile bat da handietan, beste batzuk txikietan, 2 bat da handietan.

Kontuaren ekintzak

Une honetan, ez dago ekintzarik babestuta, baina etorkizunean moderator: true/false kudeatu behar da moderatzaile bat aldatzeko.

Gailuaren ekintzak

  • hangup: true konferentziako gailu bat eskegi (moderatzaileak bakarrik)

  • raisehand: egia/false altxatzeko eskuaren egoera aldatzeko.

Hedabideen ekintzak

  • muteAudio moderatzaileek bakarrik egin dezakete parte hartzaile baten audioa isilaraztea

  • muteVideo ez da oraindik babestu.

  • active komunikabideak aktibo gisa markatzeko.

  • voiceActivity komunikabide-fluxu baten ahots-jarduera-egoera adierazteko (audiorako bakarrik garrantzitsua)

Adibide bat

So, the application/confOrder+json will contain:

{
    "989587609427420" : {
        "moderator": true, /* false  */
        "devices": {
            "40940943604396R64363": {
                "hangup": true,
                "raisehand": true, /* false */
                "media":{
                    "3532532662432" : {
                        "muteAudio": true, /* false */
                        "muteVideo": true, /* false */
                        "active": true, /* false */
                        "voiceActivity": true /* false */
                    }
                }
            }
        }
    },
    "layout": 0, /* 1, 2 */
}

Oharra: komunikabidearen motak bilkuren informazioan sartu behar dira eta bezeroak ikuspegia hobetzeko erabil dezake (adibidez, ez moztu pantaila partekatzea)

Moderatzaileak kontrolatzen

Hiru aukera daude:

  • Kontu aldatzeko konfigurazioa moderatzaileen zerrenda gehitzeko (config.yml-an (defaultModerators default moderatzaileen zerrenda izan daiteke)

  • localModeratorsEnabled egia bada, gailuaren kontu guztiak moderatzaileak izango dira

  • allModeratorsEnabled egia bada, konferentziako edonor izango da moderatzailea

Etorkizuna

  • Errekak banatu, kontrola handiagoa izateko?

Oharrak/Amirak

Protokoloa etorkizuneko beharretarako garatuko da. «Versioa» eremua edukitzea onena da.