Konferenssin pöytäkirja

Tässä asiakirjassa pyritään kuvaamaan konferenssien hallinnoinnissa tehtäviä kehitystä (audio/video). Tavoitteena on parantaa nykyistä toteutusta, joka yhdistää SIP-soittoja ja tarjoaa verkko-näytön, jossa osallistujat luetellaan, voidaan hiljentää itsenäisesti tai videon suunnittelu muutetaan (joka näyttää vain yhden osallistujan)

Määritelmät

  • Isäntä: Onko käyttäjä, joka sekoittaa äänen/videon virtauksia muille

  • Osallistuja: Jokainen konferenssin käyttäjä, jopa isännöitsijä

Vapautus

Tässä asiakirjassa kuvataan vain ensimmäiset askeleet, jotka koskevat osallistujien tunnistamista ja kaikkien osallistujien lähettämää videomikseliä.

Mahdolliset suunnittelut

  • GRID: Jokainen jäsen on näytetty samalla korkeudella/levyltä

  • ONE_BIG_WITH_SMALL: Yksi jäsen on suurennettu ja toinen esittely näkyy

  • ONE_BIG: Yksi jäsen ottaa koko näytön

CallManagerissa on kaksi uutta tapaa hallita konferenssin suunnittelu:

/**
 * 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);

Käytäntöönpano

Kaikki on hoidettu conference.cpp (yhteyttämiseksi osallistujan lähteisiin) ja video_mixer.cpp (ks. haluaman suunnittelun esitys).

Konferenssien tietojen synkronointi

Huomautus: Itse asiassa sanaa osallistuja käytetään konferenssin yhteydessä sekoitetun kutsun yhteydessä. Tämä voi johtaa aluksi joihinkin API:n ongelmiin ja sen on korjattava tulevaisuudessa

Tavoitteena on ilmoittaa kaikille osallistujille esitettyjen videoiden metatietoista.

Jos osallistuja on itse konferenssi, sen tulossa olevan suunnittelun tiedot on yhdistettävä, kun ne lähetetään muille osallistujille.

Järjestelmätiedot

Laajennus tallennetaan VectorMapStringString-säännösksi asiakkaille ja sisäisessä -näytössä seuraavalla muodossa:

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"
    }
    (...)
}

Voitavat avaimet ovat:

  • Uri = tilin uria

  • laite = laitteen tunnus

  • media = median tunnus

  • aktiivinen = jos osallistuja on aktiivinen

  • x = videoon oleva asema (x)

  • y = videon sijainti (y)

  • w = videon koko (läheys)

  • h = videon koko (korkeus)

  • video Muted = jos video on muted

  • audioLocalMuted = jos ääntä on paikallisesti hiljentetty

  • audioModerator Muted = jos ääntä moderattorit äänettöivät

  • isModerator = jos se on moderator

  • Käsi kohotettu = jos käsi kohotetaan

  • voiceActivity = jos virtaus on äänenaikainen

  • tallennus = jos vertaisella on konferenssin tallennus

Uusi API

Uusi menetelmä (CallManagerissa) ja uusi signaali, joilla saat nykyisiä konferenssin tietoja ja päivityksiä:

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

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

Käytäntöönpano

Conference Object (joka on olemassa vain, jos sekoitamme puheluja, mikä tarkoittaa, että olemme päällikkö) hallinnoi koko konferenssin tietoja, joka perustuu jokaisen Call-objektin layoutInfoon.

Jokaisella Call-objektillä on nyt LayoutInfo, ja jos se on päivitetty, pyydä Conference-objektia päivittämään tiedot.

Konferenssin johtaja lähettää tiedot SIP-kanavalla viestiä seuraavalla MIME-tyyppillä: application/confInfo+json

Jos puhelu saa tietoa, tiedämme, että puhelu on konferenssin jäsen.

Yhteenvetona Call hallinnoi vastaanotettuja järjestelyjä, Conference -managee lähetettyjä järjestelyjä.

Konferenssin tilaa muutetaan

Konferenssin tilannetta muutettaakseen osallistujien on lähetettävä määräyksiä, joita isännöi.

Protokolla on seuraavat tarpeet:

Konferenssin on määriteltävä osallistuja kolmella tasolla:

  • Tilin, joka on osallistujan henkilöllisyys

  • Laitteet, koska jokainen tili voi liittyä useiden laitteiden kautta

  • Mediat, koska laitteiden mukaan voi olla useita videoita (esim. 1 kamera ja 1 näytön jakaminen)

Jotta asiakkaat voisivat säästää kaikkiaan, heidän pitäisi saada useita tilauksia kerrallaan.

Yleiset toimet

Muuttaakseen ulkoasu, moderator voi lähettää hyödyllisen kuormituksen ”sovellus/konfOrder+json” tyypinä: jossa 0 on verkko, 1 on yksi käyttäjä suuressa, toiset pienessä, 2 on yksi suuressa

Tilin toiminnot

Tällä hetkellä ei ole tukea, mutta tulevaisuudessa moderaattor: true/false olisi käsiteltävä, jotta voidaan vaihtaa moderatorin.

Laitteen toiminnot

  • hangup: true to hangup a device from the conference (vain moderattorit)

  • raisehand: true/false korotuksen statusin muuttamiseksi.

Tiedotusvälineiden toimet

  • muteAudio vain moderattoreiden mahdollinen osallistujan äänen äänettöminen

  • muteVideo ei vielä tuettu.

  • active merkitä media aktiivisena.

  • voiceActivity ilmoittaa median virran ääniteollisuuden tila (vain merkityksellinen äänelle)

Esimerkki

hakemuksessa/sovittelu+json sisältyy siis:

{
    "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,
}

Huomautus: median tyyppi on sisällytettävä konferenssin tietoon ja sitä voidaan käyttää asiakkaalle näytön parantamiseksi (esim. ei leikata näytön jakamista)

Kontrolloiminen moderatorit

On olemassa kolme mahdollisuutta:

  • Muutostilin muunnelma lisätä moderattorin luettelo (muunnelma.yml (defaultModerators voi sisältää luettelon oletettuja moderattoria)

  • Jos localModeratorsEnabled on totta, kaikki laitteen tiliä ovat moderattorit

  • Jos kaikki moderatorit on oikeat, kaikki konferenssin jäsenet ovat moderatorit.

Tulevaisuus

  • Erilliset virrat, jotta voi hallita enemmän?

Huomattaukset/ huomautukset

On todennäköistä, että pöytäkirja kehittyisi tulevien tarpeiden mukaan.