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
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 isilarazteamuteVideo
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 diraallModeratorsEnabled
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.