Реализуйте прямую трансляцию от Agora.io

Я пытаюсь реализовать Live Broadcast от Agora.io в мобильном приложении React Native. Я ранее успешно реализовал видеозвонок. Я просмотрел документацию, сравнил и сопоставил видеозвонок с прямой трансляцией (оба веб-SDK). Я смог найти разницу только в режиме клиента, который соответствует channelProfile в response-native sdk. В документации указано, что существует три разных режима: общение, прямая трансляция и игра. Когда я реализовал видеозвонок, я присвоил 1 значению channelProfile, он работал нормально, качество было достаточно хорошим. Однако, когда я назначаю 2 для channelProfile, чтобы указать, что это прямая трансляция, качество сильно ухудшается. Я что-то не так делаю при реализации Live Broadcast? Как я могу улучшить качество прямой трансляции? Для размышления я помещаю свой код ниже:

const config = {
        appid: 'MY APP ID',
        channelProfile: this.props.navigation.getParam('channelProfile', 2),
        clientRole: this.props.navigation.getParam('clientRole', 1),
        videoEncoderConfig: {
            width: 360,
            height: 480,
            bitrate: 1,
            frameRate: FPS30,
            orientationMode: Adaptative,
        },
        audioProfile: AudioProfileDefault,
        audioScenario: AudioScenarioDefault
    }
    RtcEngine.on('userJoined', (data) => {
        console.warn("user joined", data);
        const { peerIds } = this.state;
        if (peerIds.indexOf(data.uid) === -1) {
            this.setState({
                peerIds: [...this.state.peerIds, data.uid]
            })
        }
    })
    RtcEngine.on('error', (error) => {
        console.warn("error", error);
    })
    RtcEngine.init(config);

person Javid Haji-zada    schedule 24.03.2020    source источник


Ответы (1)


В SDK Agora раньше было три режима каналов, но недавно игровой SDK был объединен с собственными SDK, поэтому есть только два режима каналов, communication и broadcast.

Каждый режим оптимизирует для разных качеств в пределах канала и в потоках. Для трансляции в документации упоминается, что при использовании битрейта по умолчанию этот режим broadcast использует вдвое больший битрейт, чем communication.

Если у вас есть проблемы с качеством, вам следует подумать об изменении битрейта, в настоящее время ваш код устанавливает битрейт на 1, что очень мало. Agora предоставляет список предлагаемых профилей разрешения, кадров в секунду и битрейта.

Документация Agora Video Bitrate: https://docs.agora.io/en/Interactive%20Broadcast/API%20Reference/oc/Classes/AgoraVideoEncoderConfiguration.html#//api/name/bitrate

person Hermes    schedule 25.03.2020
comment
Спасибо за ваш ответ! Я обнаружил, что значение channelProfile 0 используется для видеочата, а 1 - для трансляции. Ценности 2 не существует, поэтому качество было плохим. - person Javid Haji-zada; 26.03.2020