首页 > 解决方案 > 通过 Agora.io 实现直播

问题描述

我正在尝试通过 Agora.io 在 React Native 移动应用程序中实现 Live Broadcast。我之前已经成功实现了视频通话。我已经浏览了文档,比较和对比视频通话到直播(都是 web sdk)。我只能找到对应于channelProfile的客户端模式的差异在反应原生 sdk 中。在文档中,它说有三种不同的模式:通信、直播和游戏。当我实现视频通话时,我为 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);

标签: react-nativeagora.io

解决方案


在 Agora 的 SDK 中曾经有三种通道模式,但最近游戏 SDK 已经与原生 SDK 相结合,因此只有两种通道模式,communication并且broadcast.

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

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

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


推荐阅读