通过 Agora.io 实施直播

Implement Live Broadcast by Agora.io

我正在尝试通过 Agora.io 在 React Native 移动应用程序中实施直播。我以前成功实现了视频通话。我已经阅读了文档,比较和对比了直播的视频通话(都是 web sdk)。我只能在客户端的 mode 中找到差异,它对应于 react-native sdk 中的 channelProfile。在文档中它说有三种不同的模式:通信、直播和游戏。当我实现视频通话时,我为 channelProfile 的值分配了 1,它工作正常,质量足够好。但是,当我为 channelProfile 分配 2 以指示它是直播时,质量会严重下降。我在实施直播时有什么不对吗?如何提高直播质量? 为了考虑,我把我的代码放在下面:

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

Agora 的SDK 原来是三种通道模式,最近游戏SDK 和原生SDK 合并,只有communicationbroadcast 两种通道模式。

每种模式针对频道内和流内的不同质量进行优化。对于广播,文档提到当使用默认比特率时 broadcast 模式使用两倍的比特率 communication.

如果您遇到质量问题,您应该考虑更改您的比特率,目前您的代码将比特率设置为 1,这是非常低的。 Agora 提供了建议的分辨率配置文件、fps 和比特率列表。

Agora 视频码率文档:https://docs.agora.io/en/Interactive%20Broadcast/API%20Reference/oc/Classes/AgoraVideoEncoderConfiguration.html#//api/name/bitrate