மாநாட்டு நெறிமுறை

இந்த ஆவணத்தில் நாம் மாநாடுகளை (ஆடியோ / வீடியோ) நிர்வகிப்பதற்கான பரிணாமங்களை விவரிக்க வேண்டும். தற்போதைய செயலாக்கத்தை மேம்படுத்துவதே இதன் நோக்கம். இது SIP அழைப்புகளை இணைத்து ஒரு கட்டம் காட்சியை வழங்குகிறது, இதில் பங்கேற்பாளர்கள் பட்டியலிடப்பட்டுள்ளனர், சுயாதீனமாக மவுட் செய்யலாம் அல்லது வீடியோ தளவமைப்பு மாற்றப்படும் (ஒரு பங்கேற்பாளரை மட்டுமே காண்பிக்க)

வரையறைகள்

  • ஹோஸ்ட்ஃ மற்றவர்களுக்கு ஆடியோ / வீடியோ ஸ்ட்ரீம்களை கலக்கும் பயனர்

  • பங்கேற்பாளர்ஃ மாநாட்டில் உள்ள ஒவ்வொரு பயனரும், தொகுப்பாளரும் கூட

பொறுப்பு விலக்கு

இந்த ஆவணத்தில் தற்போது முதல் படிகள் மட்டுமே விவரிக்கப்பட்டுள்ளன. இதன் பொருள் பங்கேற்பாளர்களை அடையாளம் காண்பது மற்றும் அனைத்து பங்கேற்பாளர்களுக்கும் அனுப்பப்படும் வீடியோ கலக்கத்தில் இருப்பிடம்.

சாத்தியமான அமைப்புகள்

  • GRID: ஒவ்வொரு உறுப்பினரும் ஒரே உயரம்/அடையுடன் காட்டப்படுகிறார்கள்

  • ONE_BIG_WITH_SMALL: ஒரு உறுப்பினர் பெரிதாக்கப்பட்டு மற்ற முன்னோட்ட காண்பிக்கப்படுகிறது

  • ONE_BIG: ஒரு உறுப்பினர் முழுத்திரை வழங்கும்

CallManager இல் மாநாட்டின் அமைப்பை நிர்வகிக்க இரண்டு புதிய முறைகள் கிடைக்கின்றனஃ

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

இந்த செயல்முறை மிகவும் எளிமையானது. எல்லாவற்றையும் conference.cpp (பங்கேற்பாளரை ஆதாரங்களுடன் இணைக்க) மற்றும் video_mixer.cpp (தேவையான அமைப்பை வழங்க) நிர்வகிக்கிறது.

சமன்பாட்டு மாநாடுகள் தகவல்

குறிப்புஃ உண்மையில், ஒரு மாநாட்டில் கலந்த அழைப்புகளுக்கு பங்கேற்பாளர் என்ற சொல் பயன்படுத்தப்படுகிறது. இது முதலில் API க்கான சில சிக்கல்களுக்கு வழிவகுக்கும், மேலும் எதிர்காலத்தில் சரி செய்யப்பட வேண்டும்

இதன் நோக்கம், வழங்கப்பட்ட வீடியோவின் மெட்டாடேட்டாவைப் பற்றி அனைத்து பங்கேற்பாளர்களுக்கும் தெரிவிப்பதே ஆகும். இதன் பொருள், கூட்டத்தில் பங்கேற்பாளர் யார், வீடியோ எங்கே உள்ளது.

ஒரு பங்கேற்பாளர் ஒரு மாநாட்டில் இருந்தால், அதன் வருகை உள்ள அமைப்பைத் தகவல் மற்ற பங்கேற்பாளர்களுக்கு அனுப்பப்படும் போது இணைக்கப்பட வேண்டும். அமைப்பைத் தகவல் ஒரு மாநாட்டிற்கு அனுப்பப்படும் போது இணைக்கப்படக்கூடாது.

அமைப்பை தகவல்

அமைப்பை வாடிக்கையாளர்களுக்கான VectorMapStringString எனவும் பின்வரும் வடிவத்துடன் ஒரு திசையன் உடன் உள்நாட்டில் சேமிக்கப்படுகிறதுஃ

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

சாத்தியமான விசைகள்ஃ

  • uri = கணக்கின் uri

  • சாதனம் = சாதனத்தின் அடையாள அட்டை

  • ஊடக = ஊடகத்தின் அடையாளம்

  • செயலில் = பங்கேற்பாளர் செயலில் இருந்தால்

  • x = வீடியோவில் x நிலை

  • y = வீடியோவில் உள்ள நிலை (y)

  • w = வீடியோவில் உள்ள அளவு (அலை)

  • h = வீடியோவில் உள்ள அளவு (உயரம்)

  • videoMuted = வீடியோ மவுண்ட் செய்யப்பட்டால்

  • audioLocalMuted = ஆடியோ உள்ளூர் மவுண்ட் என்றால்

  • audioModeratorMuted = ஆடியோவை moderators அமைதிப்படுத்தினால்

  • isModerator = அது ஒரு moderator என்றால்

  • கை உயர்த்தப்பட்டால் = கை உயர்த்தப்பட்டால்

  • voiceActivity = ஒலி செயல்பாடு உள்ளதா எனில்

  • பதிவு = கூட்டம் பதிவு செய்யப்படுகிறதா எனில்

புதிய API

தற்போதைய மாநாட்டு தகவல் மற்றும் புதுப்பிப்புகளை பெற புதிய முறை (CallManager) மற்றும் புதிய சமிக்ஞை கிடைக்கின்றனஃ

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

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

Conference Object (நாம் அழைப்புகளை கலத்தால் மட்டுமே இருக்கும், அதாவது நாங்கள் மாஸ்டர்) ஒவ்வொரு Call object ின் LayoutInfos அடிப்படையில் முழு மாநாட்டிற்கான தகவல்களை நிர்வகிக்கிறது. getConferenceInfos இந்த object இலிருந்து நேரடியாக தகவல்களைப் பெறுகிறது.

எனவே, ஒவ்வொரு Call பொருளிலும் இப்போது ஒரு LayoutInfo உள்ளது, மேலும் புதுப்பிக்கப்பட்டால், அதன் தகவலை புதுப்பிக்க Conference பொருளிடம் கேட்கவும்.

ஒரு மாநாட்டின் தலைமை அதன் தகவலை SIP சேனல் வழியாக MIME வகை பின்வரும் செய்தியாக அனுப்புகிறது: application/confInfo+json

எனவே, ஒரு அழைப்பு சில தகவல்களைப் பெற்றால், இந்த அழைப்பு ஒரு மாநாட்டின் உறுப்பினராக இருப்பதை நாம் அறிவோம்.

சுருக்கமாக, Call received layouts, Conference-managed sent layouts ஆகியவற்றை நிர்வகிக்கிறது.

மாநாட்டின் நிலையை மாற்றுதல்

மாநாட்டின் நிலையை மாற்ற, பங்கேற்பாளர்கள், தொகுப்பாளர் கையாளும் உத்தரவுகளை அனுப்ப வேண்டும்.

இந்த நெறிமுறை பின்வரும் தேவைகளை கொண்டுள்ளதுஃ

ஒரு மாநாட்டில் பங்கேற்பாளரை வரையறுக்க 3 நிலைகள் உள்ளனஃ

  • பங்கேற்பாளரின் அடையாளம் குறிக்கும் கணக்கு

  • சாதனங்கள், ஏனெனில் ஒவ்வொரு கணக்கும் பல சாதனங்கள் மூலம் இணைக்க முடியும்

  • ஊடகங்கள், ஏனெனில் சாதனங்கள் பல வீடியோக்களைக் கொண்டிருக்கலாம் (எ. கா. 1 கேமரா மற்றும் 1 திரை பகிர்வு)

அலைவரிசை அகலத்தை சேமிக்க, வாடிக்கையாளர்கள் ஒரே நேரத்தில் பல ஆர்டர்களை அனுப்ப முடியும்.

பொது நடவடிக்கைகள்

ஒரு அமைப்பை மாற்ற, moderator ஒரு பயனுள்ள சுமை அனுப்ப முடியும் "பயன்பாடு / confOrder+json" என வகைஃ எங்கே 0 ஒரு கட்டம், 1 ஒரு பயனர் பெரிய, மற்றவர்கள் சிறிய, 2 ஒரு பெரிய உள்ளது

கணக்கு செயல்கள்

ஆனால், எதிர்காலத்தில் தொடர்பவர் ஆதரவு இல்லைஃ ஒரு தடயத்தை மாற்ற உண்மை/தொழுக்கமான தொடர்பவர் கையாளப்பட வேண்டும்.

சாதனத்தின் செயல்கள்

  • hangup: true மாநாட்டில் இருந்து ஒரு சாதனத்தை தொங்கவிட (தொடர்பவர்கள் மட்டும்)

  • raisehand: true/false raise hand's status ஐ மாற்றுவதற்கு. சாதனத்தால் மட்டுமே செய்ய முடியும், இல்லையெனில் கைவிடப்பட்டது.

ஊடகங்களின் நடவடிக்கைகள்

  • muteAudio ஒரு பங்கேற்பாளரின் ஆடியோவை அமைதிப்படுத்த மட்டும்தான் moderators மூலம் முடியும்

  • muteVideo இன்னும் ஆதரிக்கப்படவில்லை.

  • active ஊடகங்களை செயலில் இருப்பதாக குறிக்கவும்.

  • voiceActivity ஒரு ஊடக ஸ்ட்ரீமின் குரல் செயல்பாட்டு நிலையைக் குறிக்க (ஆடியோவுக்கு மட்டுமே பொருத்தமானது)

உதாரணம்

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 */
}

குறிப்புஃ ஊடக வகை மாநாடு தகவல் சேர்க்கப்பட வேண்டும் மற்றும் வாடிக்கையாளர் காட்சி மேம்படுத்த பயன்படுத்த முடியும் (எ. கா. திரை பகிர்வு குறைக்க வேண்டாம்)

கட்டுப்பாட்டு இடைத்தரகர்கள்

உண்மையில் மூன்று சாத்தியங்கள் உள்ளனஃ

  • மாற்று கணக்குகளின் அமைப்பை மாற்றுபவர்களின் பட்டியலைச் சேர்க்க ( config.yml (defaultModerators இயல்புநிலை மாற்றியமைப்பாளர்களின் பட்டியலைக் கொண்டிருக்கலாம்)

  • localModeratorsEnabled உண்மை என்றால், சாதனத்தின் அனைத்து கணக்குகளும் moderators ஆக இருக்கும்

  • allModeratorsEnabled உண்மை என்றால், மாநாட்டில் உள்ள எவரும் ஒரு மாடரேட்டர்

எதிர்காலம்

  • அதிக கட்டுப்பாடுகளை அனுமதிக்கும் வகையில் தனி நீரோட்டங்கள்?

குறிப்புகள்/கருத்துரைகள்

இந்த விதிகள் எதிர்கால தேவைகளுக்கு ஏற்ப உருவாகும். ஒரு "பதிப்பு" புலம் இருந்தால் நல்லது. இந்த புலம் காணாமல் போனால் பழைய பதிப்பு அங்கீகரிக்கப்படும்.