Konferencia jegyzőkönyv
A dokumentum célja, hogy leírja a konferenciák kezelésére vonatkozó fejlődéseket (audio/video) a jelenlegi végrehajtás javítása, amely egyszerűen összekapcsolja a SIP hívásokat és egy hálózati nézetet biztosít, amely a résztvevők listájára, függetlenül elhangolható nézetre, vagy a videó kialakításának megváltoztatására (csak egy résztvevő megjelenítése érdekében)
A definíciók
A host: A felhasználó, aki a többiek számára keverti a hang/videó áramlásait
A résztvevő: A konferencia minden felhasználója, még a házigazdája is
A felelősségmentesség
Ez a dokumentum csak a kezdeti lépéseket írja le, ami a résztvevők azonosítását és a videó keverőben lévő pozíciót jelenti, amelyet minden résztvevőnek küld.
Lehető elrendezések
A háló: Minden tag azonos magasságban/szélességben jelenik meg.
ONE_BIG_WITH_SMALL: Egy tagot megmérőzik, a másik előképezés látható
ONE_BIG: Egy tag viszi a teljes képernyőt
Két új módszer áll rendelkezésre a konferencia elrendezésének kezelésére a CallManagerben:
/**
* 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);
A végrehajtás
A végrehajtás elég egyszerű. Minden a conference.cpp
(a résztvevő link forrás) és a video_mixer.cpp
(a kívánt beállítás megjelenítése) által irányul.
A konferenciaink információs szinkronizálása
Megjegyzés: A résztvevő szó a konferencia során keveredett hívásokra használható. Ez először néhány problémát okozhat az API-vel, és a jövőben meg kell oldani
A cél az, hogy a résztvevőknek értesítsék a videó metadatait. Ez azt jelenti, hogy a résztvevő hol van a konferencián és hol található a videó.
Ha a résztvevő maga egy konferencia, a beérkező beépítési információkat össze kell egyesíteni, amikor más résztvevőknek küldik.
A szerkezeti információ
A layoutot VectorMapStringStringként tárolják az ügyfelek számára és belsőleg a következő formátumú
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"
}
(...)
}
A lehetséges kulcsok:
uri = számlák uri
eszköz = eszköz azonosítója
média = média azonosítója
aktív = ha a résztvevő aktív
x = a videóban lévő helyzet (x)
Y = a videóban található pozíció (y)
w = méret (szélesség) a videóban
h = méret (magasság) a videóban
videócsendes = ha a videót csendesítették
audioLocalMuted = ha a hangot helyileg elhallgatják
audioModeratorMuted = ha az audio a moderátorok által lecsendesítve van
isModerator = ha ez egy moderátor
kézemelkedett = ha a kéz emelkedett
hangaktivitás = ha a streamnek hangaktivitása van
felvétel = ha a társ felvételi a konferenciát
Új API
Új módszer (a CallManagerben) és egy új jel, amely a konferencia aktuális információinak és frissítésekhez vezet:
VectorMapStringString getConferenceInfos(const std::string& confId);
void onConferenceInfosUpdated(const std::string& confId, const VectorMapStringString& infos);
A végrehajtás
A Conference
Object (amely csak akkor létezik, ha összekapcsoljuk a hívásokat, ez azt jelenti, hogy mi vagyunk a mester) az összes konferenciára vonatkozó információkat kezel, minden Call
objektum layoutInfo-jára alapozva.
Tehát minden Call
objektumnak most van egy LayoutInfo, és ha frissítve van, kérje a Conference
objektumot, hogy frissítse az adatait.
A konferenciavezető az SIP csatornán keresztül üzenetet küld a következő MIME-típusú üzenetként: application/confInfo+json
Tehát, ha egy hívás kap valamilyen infót, tudjuk, hogy ez a hívás egy konferenciánál van.
Összefoglalva: Call
kezel a kapott beosztásokat, Conference
-kezelett küldött beosztásokat.
A konferencia állapotának megváltoztatása
A konferencia állapotának megváltoztatásához a résztvevőknek meg kell küldeniük a megrendeléseket, amelyeket a szervező fog kezelni.
A protokollnak a következő igényei vannak:
A konferencia több szintre terjedő megbízások kezelésére van szükség.
A résztvevő személyazonosságát képező számla
Felszerelések, mivel minden számla több eszközön keresztül csatlakozhat
Mediák, mivel több videót is lehet létrehozni a készülékeken keresztül (pl. 1 fényképezőgép és 1 képernyőmegosztás)
A sávszélesség megőrzése érdekében a klienseknek egyszerre több rendelést kell küldniük.
Általános intézkedések
A moderató egy beépítés megváltoztatásához küldhet egy hasznos terhelést a „application/confOrder+json” típusú: ahol 0 egy háló, 1 egy nagy felhasználó, mások kis felhasználók, 2 egy nagy felhasználó
A számla műveletei
A jelenlegi, a jövőben nem támogatott intézkedés: a moderátor cseréje érdekében igaz/hamis ` kezelni kell.
A készülék műveletei
hangup: true
a konferencia készülékének felfüggesztésére (csak a moderátorok)raisehand: true/false
a felemelő kéz státuszának megváltoztatása.
A média cselekedetei
muteAudio
csak a moderátorok képesek elhallgatni a résztvevő hangjátmuteVideo
még nem támogatott.active
a média aktívnak jelölésére.s hangTárgyalása
egy médiaáram hangtárgyalási állapotának jelölése (csak hanghoz való releváns)
Példák
A a jelentés/megbízás+json
tartalmazza tehát:
{
"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,
}
Megjegyzés: a média típusát a konferencia-információkba kell belevenni, és a kliens számára a megjelenítés javítására használható (pl. ne vágja meg a képernyő megosztását)
A moderátorok ellenőrzése
Valójában három lehetőség van:
A módosító fiók konfigurációja a moderátorok listájának hozzáadására (a config.yml (
defaultModerators
tartalmazhatja a standard moderátorok listáját)Ha a
localModeratorsEnabled
igaz, a készülék összes számlája moderátor leszHa az
allModeratorsEnabled
igaz, a konferencia bárki a moderátor lesz
A jövő
Külön áramlatokat, hogy több irányítást engedjünk?
Megjegyzések/Kommentációk
A protokoll valószínűleg a jövőben is fejlődni fog, úgy gondolom, hogy a legjobb, ha van egy „verzió” mező.