react-native - 通过 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);
解决方案
在 Agora 的 SDK 中曾经有三种通道模式,但最近游戏 SDK 已经与原生 SDK 相结合,因此只有两种通道模式,communication
并且broadcast
.
每种模式都针对通道内和流内的不同质量进行了优化。对于广播文档提到,当使用默认比特率时,该broadcast
模式使用两倍的比特率communication
。
如果您遇到质量问题,您应该考虑更改比特率,目前您的代码将比特率设置1
为非常低。Agora 提供了建议的分辨率配置文件、fps 和比特率的列表。
推荐阅读
- json - 访问html中的嵌套对象以获取角度
- regex - 使用正则表达式删除特定字符块中的所有内容
- c++ - 用于存储类对象的 C++ 哈希表
- intellij-idea - 带有我插件的 Intellij 代码在 ubuntu 上不起作用
- c# - 我可以不可知地传递表值参数吗?
- python - 对列执行函数,并用新值替换旧值。访问 python (pyodbc 和 pandas)
- javascript - 限制 Jquery 中每行的 textarea 字符数
- angular - Fullcalendar 4.3.1 - 设置时间轴视图的显示间隔开始
- java - 带有抽屉和片段导航的活动
- javascript - 在 while 循环中比较 .getAtribute("value")