移动直播集成问题
1、设置码率无效?
解答:
移动直播自定义码率,代码如下
TXLivePushConfig *config = [[TXLivePushConfig alloc] init];
[config setEnableAutoBitrate:true];
[config setAutoAdjustStrategy:AUTO_ADJUST_BITRATE_STRATEGY_1];
config.videoBitrateMin = 900;
config.videoBitrateMax = 1000;
// [pusher setVideoQuality:[PushSettingViewController getVideoQuality] adjustBitrate:YES adjustResolution:NO];
[pusher setConfig:config];
一旦设置了码率,调用setVideoQuality:adjustBitrate:adjustResolution(推荐这个方法)
这个方法前面的码率设置就会失效,或者先调用这个方法,后面再设置码率,也会覆盖前者。
2、摄像头直播切换录屏直播
场景:开始摄像头直播推流,然后切换成录屏推流。
出现问题:
1、第一次切换,出现无效会话的提示,直接停止录屏
2、注释掉RPSampleBufferTypeAudioApp模式下的代码,不会出现第一次无效会话,但会出现上行不足的提示,然后就停止录屏。(如下图)
解决办法:根据客户的描述,摄像头推流是在录屏推流前停止的。因为中间没有时间间隔,可能导致摄像头推流占用的资源无法释放,然后对立马进行录制推流的操作产生影响。建议:客户停止摄像头推流后,间隔2秒,再进行录屏推流。
3、强杀app导致音频相关的崩溃
用户强杀app导致音频相关的崩溃 这个不会影响用户业务 目前正在解决这个问题 预计一两个版本会解决。
4、低延时加速流播放失败。直播连麦,使用加速流地址播放失败。(报错:getAccelerateStreamPlayUrl failed, play stream with raw url) 解决过程:
获取加速流地址失败问题先按以下步骤去排除
(1)购买了低延时播放套餐,或者appid在后付费名单中;
(2)防盗链鉴权参数必须正确;
(3)UDP协议没有被封锁,尤其是UDP的443和8080端口;可更换网络环境试下
(4)建议下载下Appstore上面的云工具包测试下当前环境
按照上面的步骤进行排查,如果都没有发现问题,可以查看一下加速流的sdkappid和账号上的sdkappid是否一致。
注释:低延时加速流地址的获取:1、sdk计算,通过get_anchors获取 2、业务后台自己计算,防盗链默认拿取推流的防盗链。
5、移动直播,自定义视频采集,能否使用我们的美颜、水印功能?
解决方法:自定义音视频采集是无法使用我们移动直播的美颜,水印功能。需要客户自己进行渲染。我们的sdk只保留负责编码与发送的能力。可以通过,onRenderVideoFrame:userId:streamType这个方法进行预处理
6、推流时需要拿到视频的帧率、分辨率、码率等信息,进而分发给自己的服务器进行业务操作。问:有没有底层的接口给调用,直接分发给服务器?
解决方法:暂时没有提供底层的接口,不过客户可以在推流时使用回调方法onNetStatus:进行这种操作。
7、移动直播,观众端进入房间,再切换到后台,进入抖音看视频,再回到直播App前台,发现没有声音。(有画面,没有声音)
解决方法:前台和后台分别设置AVAudioSession setActive:error的活跃状态。当用户回来前台设置在启动音频为活跃状态。
8、直播过程中,刚开始的1分钟左右音频采集失败,导致录制会看视频出现全程无声音。(但是用VLC观看回放和直播是一样,前面一分钟没有声音,后面都有声音,但是用我们的播放器,甚至是网页播放器,都是全程无声音)
原因:因为一般的播放器不会探测很久,探测了一小段发现没有音频,就当成纯视频播放了。而VLC探测时间会更长所以有声音。从中知道普通播放器探测短时间内音频都会自动变成纯视频播放,从而释放音频,减轻设备的负担。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 敏捷中的端到端测试
- java编程思想第四版第十章习题
- java编程思想第四版第十一章总结
- java编程思想第四版第十一章习题
- java编程思想第四版第十三章字符串 习题
- java编程思想第四版第十三章字符串 总结
- LoRa节点开发——代码详解修改LoRaWAN相关参数
- 01 . Redis简介及部署主从复制
- 07 . Kubernetes之Service
- LoRa节点开发——代码详解如何修改发射和接收信道(频率)
- 06 . Kubernetes之Pod控制器详细介绍及应用
- Python面试题
- 08 . Kubernetes之 ingress及Ingress Controller
- cpu占用过高排查
- LoRa节点开发——代码详解LoRaWAN发送与接收数据