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ú vektorral:

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át

  • muteVideo 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 lesz

  • Ha 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ő.