Konferentsi protokolli
Selle dokumendi eesmärk on kirjeldada konverentside juhtimisel tehtud arengut (audio/video).
Määrused
Host: Kasutaja segab teistele audi-/videosstrimidele
Osaleja: Iga konverentsi kasutaja, isegi võõrustaja
Vastutuse välistamine
Käesolevas dokumendis kirjeldatakse praegu ainult esimesed sammud.
Võimalikud paigaldused
GRID: iga liige on näidatud samas kõrguses/laiusel
ONE_BIG_WITH_SMALL: Üks liige on suurendatud ja teine eelvaade on näidatud
ONE_BIG: Üks liige võtab täieliku ekraani
CallManageris on konverentsi korraldamiseks saadaval kaks uut meetodit:
/**
* 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);
Täiteviis
Kõik on juhitud conference.cpp
(sõltuda osaleja allikatega) ja video_mixer.cpp
(töötada soovitud paigutus).
Koosolekute sünkroniseerimine
Märkus: Tegelikult kasutatakse sõna osaleja konverentsis segatud kõne jaoks. See võib algul põhjustada mõningaid probleeme API-le ja tuleb tulevikus parandada
Eesmärk on teavitada kõiki osalejaid esitatud videot käsitlevate metadate kohta.
Kui osaleja ise on konverents, tuleb selle siseneva paigaldamise info ühendada, kui see saadetakse teistele osalejatele.
Layout info
Layout salvestatakse kliendi vectorMapStringStringina ja sisemalt vector
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"
}
(...)
}
Võimalikud võtmed on:
uri = konto uri
seadme = seadme ID
meedia = meediat ID
aktiivne = kui osaleja on aktiivne
x = video positsioon (x)
y = video positsioon (y)
w = video suurus (laius)
h = video suurus (kõrgus)
videoMutted = kui video on vaikne
audioLocalMuted = kui audio on kohalikult vaikne
audioModeratorMuted = kui moderatorid panevad audio vaikima
isModerator = kui see on moderator
käe tõstmine = kui käsi tõstetakse
häälakäivitus = kui voolu on häälakäivitusel
salvestamine = kui kolleeg salvestas konverentsi
Uus API
Uus meetod (CallManageris) ja uus signaal vastavalt praeguste konverentside infot ja ajakohastusi saadaval:
VectorMapStringString getConferenceInfos(const std::string& confId);
void onConferenceInfosUpdated(const std::string& confId, const VectorMapStringString& infos);
Täiteviis
Konverents
Objekt (mis on olemas ainult siis, kui me segame kõnesid, see tähendab, et me oleme meister) haldab kogu konverentsi teavet, mis põhineb iga Call
objekti layoutInfos.
Seega on iga Call
objektil nüüd LayoutInfo ja kui see on ajakohastatud, palu Conference
objektilt oma infot ajakohastada.
Konferentsi juht saadab oma info SIP-kanaali kaudu sõnumi järgmiste MIME-tiikidega: application/confInfo+json
Kui kõne saab infot, siis me teame, et see on konverents.
Üheks sõnastuseks: Call
juhatab saadud seadmeid, Conference
-managed saadetud seadmeid.
Konferentsi seisundi muutmine
Et muuta konverentsi seisundit, peavad osalejad saatma korraldusi, mida võõrustaja käsitleb.
Protokollil on järgmised vajadused:
See peaks tegelema korraldustega mitmel tasandil.
Osaleja identiteediga konto
seadmed, sest iga konto saab ühendada mitme seadme kaudu
Meedia, sest seadmete kaupa võib olla mitu videot (nt 1 kaamera ja 1 ekraanide jagamine)
Liiduvõhu säästmiseks peaksid kliendid saama saata mitu tellimust korraga.
Üldmeetmed
Moderator võib paigalduse muutmiseks saata kasulik koormus, mille tüüp on „application/confOrder+json“: kus 0 on võrk, 1 on üks kasutaja suures, teised väikestes, 2 on üks suures
Kontodi tegevused
Praegu ei ole siiski mingit toetust antud tegevusele tulevikus moderator: real/false
tuleb käsitleda moderatorit vahetamiseks.
Seadme toimingud
hangup: true
kongressis olev seadme üles üles üles üles üles üles üles üles üles üles (ainult moderatorid)raisehand: tõsi/väärs
tõsta käe staatuse muutmiseks.
Meedia tegevus
muteAudio
ainult moderatorid suudavad osaleja audiot vaikistadamuteVideo
ei toeta veel.active
märgata meedia aktiivseks.voiceActivity
märgata meediasüsteemi häälakäitumise staatust (ainult audiosõnaline)
Näide
Seega sisaldab taotlus/kompleks+json
:
{
"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,
}
Märkus: meediatüübi tuleks sisaldada konverentside infotesse ja seda saab kasutada kliendi jaoks näite parandamiseks (nt ei tohi ekraanide jagamist lõigata)
Kontrollivad moderatorid
Tegelikult on kolm võimalust:
Muudatava konto konfiguratsioon, et lisada moderatorite nimekiri (konfigur.yml (
defaultModerators
võib sisaldada standardmoderatorite nimekirja)Kui
localModeratorsEnabled
on tõsi, siis kõik seadme kontod on moderatoridKui
allModeratorsEnabled
on tõsi, siis iga konverentsis on moderator
Tulevik
Erinevad voolud, et võimaldada rohkem kontrolli?
Märkused/Kommentarid
Prootokol on tõenäoliselt tulevikus vajalik, sest see on parem, kui meil on „versiooni“ välja.