实时音视频常见问题 (FAQ)


直播、互动直播、实时音视频、旁路直播的区别及关系

发布时间:2018年6月12日 更新时间:2018年6月29日 贡献者:yjjjiang jansonjiang

对于刚接触音视频技术的开发者而言,理清这四个概念需要一些时间,让我们通过一组简单的示意图以及关键词来了解这几个概念:

  • 直播

关键词:一对多,RTMP/HLS/HTTP-FLV,CDN

直播是一种非常典型的流媒体系统,通常会分为推流端(Pusher)、拉流端(或者叫播放端,Player)以及直播流媒体中心(直播源站),通常会使用CDN进行直播的分发,因此大部分情况下使用的是通用标准的协议,如RTMP,而经过CDN分发后,播放时一般可以选择RTMP、HTTP-FLV或HLS(H5支持)等方式。直播的特点是只有一个推流端,以及多个的观看端

  • 实时音视频

关键词:双人/多人通话,UDP私有协议,低延时

实时音视频(Real-Time Communication, RTC)主要应用场景是音视频通话,技术关注点是低延时通信,因而使用基于UDP的私有协议,其延迟可低于100ms,适用于双人通话或是多人群组群话,典型的场景就是QQ电话、微信电话。 腾讯云实时音视频(TRTC)覆盖各平台,除了iOS/Android/Windows之后,还支持小程序以及 WebRTC 互通,并且支持通过云端混流的方式将画面旁路直播出去。当业务对延迟敏感,通话场景要求比较高,或是需要小程序或者 H5 场景下的双人或多人音视频通话可以选择实时音视频 TRTC。

  • 互动直播

关键词:连麦,二对多/多对多,私有协议+标准协议,DC/OC+CDN

互动直播是在实时音视频的基础上,将实时音视频某个房间中的画面经云端混流后,通过旁路直播的方式直播出来。因此,互动直播主播与连麦者之间延迟与实时音视频一致,而主播/连麦者与普通观众之间的延时则与普通直播相同。

  • 旁路直播

关键词:云端混流,转推,CDN

将主/副播实时音视频通话时的整个房间的画面复制一份到云端进行云端混流,并将混流后的画面推流给腾讯云直播系统的工作方式。 因为混流后的视频数据流和主/副播通话房间实际上并不是同一路流,而是在另外平行的一路,因而称为旁路,即不在主路。云端录制时,录制的流也是通过旁路的方式从流媒体中心引出,存到COS中。


实时音视频是否有提供1080p的支持

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:yjjjiang

目前暂未提供1080p画质的支持


是否可以增加预处理接口自定义数据

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:yjjjiang

采集端做处理,可按以下文档说明,拿到视频数据自己做处理

TXCVideoPreprocessor(ilivefilter) 使用说明(实时音视频)

[注意] PC端使用setPreTreatmentFun方法


是否支持硬件编码上传( H.264或者H.265格式视频)

发布时间:2018年6月12日 更新时间:2018年6月12日 贡献者:yjjjiang

目前暂不开放


实时音视频可以跟互动直播SDK通信吗

发布时间:2018年6月12日 更新时间:2018年7月26日 贡献者:yjjjiang

  • 互通

可以,只要sdkappid一致且房间号一致即可。所以原来的互动直播项目,也要使用新建的实时音视频项目的sdkappid.


直播中有切换连麦观众,需要重新调用混流接口吗?

发布时间:2018年6月13日 更新时间:2018年6月13日 贡献者:yjjjiang

需要,因为流id(直播码)会产生变化


有切换扬声器和听筒的接口吗?

发布时间:2018年6月13日 更新时间:2018年6月13日 贡献者:yjjjiang

要先获取avsdk的实例,然后调用音频控制类 AVAudioCtrl下的setAudioOutputMode接口。

android:ILiveSDK.getInstance().getAudioEngine().setOutputMode(...);

iOS :[[[ILiveSDK getInstance] getAVContext].audioCtrl setOutputMode:]


扬声器切换听筒失败

发布时间:2018年6月13日 更新时间:2018年6月13日 贡献者:yjjjiang

互动直播的场景不支持听筒切换,目前有实时通信场景和极速模式 可以支持切换。
spear切换应用场景说明


为什么avmonitor查询不了,报错The account don't exist!

发布时间:2018年6月13日 更新时间:2018年6月13日 贡献者:yjjjiang

第二个参数错误。不是腾讯云帐号,而是客户端登录sdk的identifier,即userid。
第一个参数是 以14开头的 sdkappid ,在互动直播控制台可以看到。

[注意]参数填写不支持空格。


进入房间/创建房间失败原因

发布时间:2018年6月14日 更新时间:2018年6月14日 贡献者:xxianghe

  • 错误码返回1,原因:角色不存在,errMsg=ERROR. EnterRoom failed. Role not exists。解决方案:先要在实时音视频控制台或者互动直播控制台设置对应的角色,然后在进房的roomoption里设置对应的角色名;如果确认角色已经设置,并且spear配置更新超过两小时后还是报错,按自定义Spear配置功能该文档设置。

  • 错误码返回71,user id error,原因:使用新帐号登录但未登出老帐号(连续登录)。解决方案:使用新帐号登录先登出一次;

  • 错误码返回8011,原因:上次操作未完成。解决方案:先确认在上次退房回调上抛后才进房,然后确认创建或加入房间接口没有重复调用;

  • 错误码返回8002,error message = no AVcontext found,原因:没有登录或者登录没有成功就进房了。解决方案:重新登录,确保登录成功了再进房。

  • 错误码返回10005,真实错误码-14,原因:加入的房间不存在或者主播已经创建了该房间,但是30s内房间内没上行会自动解散,观众进入不存在的房间,又没有创建房间的权限就会报该错;

  • 错误码返回10015, invalid group id ,原因:群组id不存在或找不到群组(还没创建好就加入)排查方案:出现这种情况多为群组已删除,或尝试加入不同sdkappid创建的群组(服务器取到直播列表为由其它sdkappid创建),主播创建房间设置roomoption.imsupport=false,观众进房设置的roomoption.imsupport=true就会报这个错,imsupport为是否创建或加入im群组;

  • 错误码返回10021,group id has be used,原因:群组id已被其他主播使用并且未主动解散。解决方案:1.换个群组号,2.退出直播间时会自动解散群组,那下次还可以使用同一个群组(主播异常退出情况需要调IM的REST API通过管理员身份手动解散,SDK不会自动解散群组);


没有声音问题

发布时间:2018年6月14日 更新时间:2018年6月14日 贡献者:xxianghe

  • 确认主播是否开mic,观众是否开speaker,手机是否静音;
  • 确认用户是否开启了静音检测(默认都是开的,实时通信可以配置,互动直播和极速模式(实时音视频使用的)不可配置),如果麦克风采集的能量太低,可检测到为静音状态,都会停止音频上行;
  • 确认用户AVMonitor音频上行情况。

没有视频问题

发布时间:2018年6月14日 更新时间:2018年6月14日 贡献者:xxianghe

  • 本地摄像头打开失败,常见原因:后台其它应用占用了摄像头或者如果是 Android 6.0 以上设备需要确认已申请打开摄像头的动态权限Manifest.permission.CAMERA;
  • 无法渲染画面:确认有设置有效的渲染控件,确认没有调用onPause暂停画面渲染,确认在进房时没有绑定无效渲染控件,如何渲染-Android

怎样把推流的地址和每个主播对应起来?

发布时间:2018年6月15日 更新时间:2018年6月15日 贡献者:yjjjiang

根据直播码生成规则 直播码=BIZIDMD5(房间号用户名_数据类型),可以拼接出播放地址。同理,得到播放地址,也可以反过来得到 房间号 和 用户名。


为什么WebRTC和Android/iOS/PC不能互通(彼此看不见画面)?

发布时间:2018年6月25日 更新时间:2018年10月11日 贡献者:xxianghe yjjjiang

关键词:webRtc,互通

  • 原因是:androd/IOS/PC 三端,在1.9.0之前的版本走IM通道(自研环境),1.9.0之后的版本 默认使用云上环境,而各端环境一致 才能互通。
  • 解决方案(二选一):
    1.都升级到1.9.0之后的版本(默认使用云上环境);
    2.把1.9.0之后的sdk 切换到imsdk通道.
  • 各端切换到imsdk通道设置如下:
    Android:在初始化SDK之前加上 ILiveSDK.getInstance().setChannelMode(CommonConstants.E_ChannelMode.E_ChannelIMSDK)

    iOS :在初始化SDK之前加上 [[ILiveSDK getInstance] setChannelMode:E_ChannelIMSDK withHost:@""]

    PC :在初始化SDK之前加上 ILive()->setChannelMode(E_ChannelIMSDK)

    WebRTC :在new WebRTCAPI初始化时加一个 useCloud:0(imsdk通道环境),WebRTC默认是云上环境(useCloud:1)

    小程序 :WebRTC音视频鉴权服务可以在云上和imsdk通道间切换,云上:https://official.opensso.tencent-cloud.com/v4/openim/jsonvideoapp;
    imsdk通道:https://yun.tim.qq.com/v4/openim/jsonvideoapp.

[注意]:各端环境一致,才能互通。


如何用eclipse或者本地集成?

发布时间:2018年7月6日 更新时间:2018年7月6日 贡献者:jasonxiao

    1. jcenter核心库上面下载iliveSDK最新版本的aar包 将aar包解压缩,将classes.jar改名为ilivesdk.jar后和libs文件夹下的jar一起放在eclipse工程的libs文件夹中

      1.8.7版本以后依赖了datareport模块

    2. 如果是直播业务,在jcenter直播库上面下载直播业务层aar包 将aar包解压缩,将classes.jar改名为livesdk.jar后一起放在eclipse工程的libs文件夹中
    3. 如果是电话业务,在jcenter电话库上面下载电话业务层aar包 将aar包解压缩,将classes.jar改名为callsdk.jar后一起放在eclipse工程的libs文件夹中
    4. 将aar包中jni文件夹中内容放到eclipse工程的libs文件夹中,如图
    5. 在工程的AndroidManifest.xml中加入权限以及一些必须的服务(详细参考
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

在Application标签中加入

<!-- 消息收发service -->
    <service
        android:name="com.tencent.qalsdk.service.QalService"
        android:exported="false"
        android:process=":QALSERVICE" />
    <service
        android:name="com.tencent.qalsdk.service.QalAssistService"
        android:exported="false"
        android:process=":QALSERVICE" />
    <!-- 离线消息广播接收器 -->
    <receiver
        android:name="com.tencent.qalsdk.QALBroadcastReceiver"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.tencent.qalsdk.broadcast.qal" />
        </intent-filter>
    </receiver>
    <!-- 系统消息广播接收器 -->
    <receiver
        android:name="com.tencent.qalsdk.core.NetConnInfoCenter"
        android:process=":QALSERVICE" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.TIME_SET" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.TIMEZONE_CHANGED" />
        </intent-filter>
    </receiver>

Android登出后再登录enableCamera报8011(内部忙、上一请求未完成),同一个号码进入退出房间都是可以的,但是只要切换帐号就不行了

发布时间:2018年7月26日 更新时间:2018年7月26日 贡献者:xxianghe

登录之前设置这个后正常ILiveSDK.getInstance().setCaptureMode(ILiveConstants.CAPTURE_MODE_SURFACETEXTURE);这是sdk里悬浮框复用的一个bug,后面的版本会有修复。


进房成功后如何动态切换权限?

发布时间:2018年7月26日 更新时间:2018年7月26日 贡献者:xxianghe

  • iOS:[[[ILiveSDK getInstance] getAVContext].room ChangeAuthoritybyBit:]

    Android:ILiveSDK.getInstance().getAVContext().getRoom().changeAuthority()。


webRtc 请求登录报错,10008 only secure origin allowed

发布时间:2018年7月26日 更新时间:2018年7月26日 贡献者:yjjjiang

  • 域名的问题。

使用webRTC需要在https或者localhost 或者本地搭服务器访问,http访问的话或出现获取本地流失败,这个原则是出于安全考虑。


自定义采集音频问题

发布时间:2018年7月27日 更新时间:2018年7月27日 贡献者:xxianghe

  • 1.主播或上麦观众腾讯云后台 spear 角色配置里音频场景要设置为【开播】(开播场景会占用本地录音权限),也可以设置为【观看】这样就不会占用- 本地音频设备了;
  • 2.进房间时 mic 和 speaker 都要打开(enablemic是控制是否发送音频数据);
  • 3.进房间成功后调用接口 AVAudioCtrl.changeAudioCategory 切换至观看场景(第一步如果设置为【观看】场景此步省略);
  • 4.调 enableExternalAudioDataInput 开启自定义采集音频;
  • 5.调 fillExternalAudioFrame将外部采集的音频塞给 AVSDK(QAVAudioFrameDesc = {48000, 2, 16});
  • 6.以上接口都需在主线程调用。

web端,双方隔的很远(听不见对方说话)的情况下,连麦观众出现了啸叫/回音(听到自己的说话声)。

发布时间:2018年7月30日 更新时间:2018年7月30日 贡献者:yjjjiang

关键词:webRtc,回声

检查标签muted 是否有设置为true https://cloud.tencent.com/document/product/647/17018


使用小程序 或者webRtc ,报错 -10010 或者 -11000。

发布时间:2018年7月31日 更新时间:2018年7月31日 贡献者:yjjjiang

关键词:webRtc,白名单

检查是否有开启实时音视频白名单,如果确认没开启(如何确认?提供sdkappid给技术支持), https://buy.cloud.tencent.com/rav_th5 先在此链接购买套餐包 ,然后找商务或者群里的技术支持 ,提供对应的sdkappid 和购买套餐包的订单截图,开启白名单之后0.5-2 小时生效。


自研环境和云上环境,有什么区别?

发布时间:2018年7月31日 更新时间:2018年7月31日 贡献者:yjjjiang

关键词:环境,区别

相较于自研环境,云上环境优化了通信链路质量。1.9.0之前的版本都使用的自研环境,如非必要(新版本修复bug),不建议升级为云上环境。


互动直播/实时音视频需要访问到哪些IP或域名?

发布时间:2018年8月2日 更新时间:2018年8月2日 贡献者:xxianghe

关键词:IP,域名

ip动态分配的,没有固定值,端口让他们保证常用的可用就可以,比如80,8000,8080,443,14000,15000, 8687 、443 42000、42200 42201、42800 52000、52200


用户单独集成了bugly和ilivesdk内自带的bugly冲突了,能否删除掉ilivesdk内的bugly?

发布时间:2018年8月2日 更新时间:2018年8月2日 贡献者:xxianghe

关键词:bugly

  • Android:可以通过exclude module:'buglyforimsdk'移除bugly
  • iOS :可以直接删除IMSDKBugly.framework

AVmonitor上查不到信息,查询条件都输入正确

发布时间:2018年8月2日 更新时间:2018年12月21日 贡献者:xxianghe


创建房间时候,报错 88 no pay for qcloud error,进房时报 80 Failed to join the room.Optional("AVSDK")--80---Optional("bitmap encrypt str empty(im_code=80)")

发布时间:2018年8月2日 更新时间:2018年8月6日 贡献者:yjjjiang,xxianghe

关键词:错误码88,80,1.9.0版本,自研环境,通道设置

  • 原因是:androd/IOS/PC 三端,在1.9.0之前的版本走IM通道(自研环境),1.9.0之后的版本 默认使用云上环境,而各端环境一致 才能互通。
  • 解决方案(二选一):
    1.都升级到1.9.0之后的版本(默认使用云上环境);
    2.把1.9.0之后的sdk 切换到imsdk通道.
  • 各端切换到imsdk通道设置如下:
    Android:在初始化SDK之前加上 ILiveSDK.getInstance().setChannelMode(CommonConstants.E_ChannelMode.E_ChannelIMSDK)

    iOS :在初始化SDK之前加上 [[ILiveSDK getInstance] setChannelMode:E_ChannelIMSDK withHost:@""]

    PC :在初始化SDK之前加上 ILive()->setChannelMode(E_ChannelIMSDK)

    WebRTC :在new WebRTCAPI初始化时加一个 useCloud:0(imsdk通道环境),WebRTC默认是云上环境(useCloud:1)

    小程序 :WebRTC音视频鉴权服务可以在云上和imsdk通道间切换,云上:https://official.opensso.tencent-cloud.com/v4/openim/jsonvideoapp;
    imsdk通道:https://yun.tim.qq.com/v4/openim/jsonvideoapp.

[注意]:各端环境一致,才能互通。


Android(ILiveMemStatusLisenter)和iOS(AVListener)无法监听到ILVLIVE_AVEVENT_MEMBER_ENTER 和ILVLIVE_AVEVENT_MEMBER_EXIT,进房和出房事件

发布时间:2018年8月7日 更新时间:2018年8月7日 贡献者:xxianghe

  • 这两个事件已经废弃,参考随心播demo发自定义消息通知群成员进出房间。
  • iLiveSDK升级到1.9.2之后,新增了进出房事件,详见统一事件回调

DC和OC分配问题

发布时间:2018年8月9日 更新时间:2018年8月9日 贡献者:xxianghe

  • 分配规则:
    房间内<=5人时,不管什么角色,都是走核心机房;

    房间内>5人时,前面5个人走核心机房,后面的人,上麦观众走核心机房,普通观众走边缘机房,

    小运营商(除了三大运营商)全走核心机房,不分普通观众还是上麦观众。
  • 怎么查DC/OC:
    https://cloud.tencent.com/document/product/647/16828 , AVmonitor上通过“是否代理机”字段能判断DC还是OC,是就是OC(边缘机房),否代表DC(核心机房) 。

[提示]上麦观众需要配置上行权限(即发送数据的权限)所以会走核心机房,进房时如何配置权限参考:DC和OC的分配


Android编译时报:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file ...,]] couldn't find "libhy_gpio_jni.so"

发布时间:2018年8月9日 更新时间:2018年8月9日 贡献者:xxianghe

关键词:UnsatisfiedLinkError,DexPathList

由于目前只支持armeabi架构(1.0.5版本之后支持arm-v7a),如果工程(或依赖库)中有多架构,需要在build.gradle中添加以下配置 android{ defaultConfig{ ndk{ abiFilters 'armeabi', 'armeabi-v7a' } } }


Android 进入房间,偶现黑屏。

发布时间:2018年8月15日 更新时间:2018年8月15日 贡献者:yjjjiang

关键词:黑屏,偶现

检查下代码,是否有设置ILiveSDK.getInstance().setCaptureMode(ILiveConstants.CAPTURE_MODE_SURFACETEXTURE);
如果没有设置,在登录前 加上这句代码再试下.


实时音视频获取roomsig,官方文档中使用的URL是 official.opensso.tencent-cloud.com/v4/openim/jsonvideoapp ,但是demo中使用的是 yun.tim.qq.com/v4/openim/jsonvideoapp ,请问是两者都可以,还是有生产环境区分?。

发布时间:2018年8月22日 更新时间:2018年8月22日 贡献者:zilongye

第一个是云上环境,另一个是非云上;其他各端都有这两个环境的区别,只要各端都在同一个环境就可以互通,云上环境对链路进行了优化。建议优先使用云上环境。


手机端怎么关闭,控制台的日志信息打印?

发布时间:2018年8月22日 更新时间:2018年8月22日 贡献者:yjjjiang

控制台,打印

Android:ILiveLog.setLogPrint(false); 可以去掉大部分
IOS:QavLogger 类下的 disableLogPrint ,禁用日志控制台打印

[注意]:都需要在sdk初始化之前调用


音视频房间/IM群组解散逻辑

发布时间:2018年8月24日 更新时间:2018年8月24日 贡献者:xxianghe

  • 音视频房间:房间内超过30S没有音视频上行就会自动解散;
  • IM群组:主播主动退房就会自动解散群组,异常退出需要手动解散,没解散其他用户使用同一群组号创建房间时会报10021,https://cloud.tencent.com/document/product/269/1624

iOS切高分辨率1280 x 720时导致画面拉伸变形

发布时间:2018年9月12日 更新时间:2018年9月12日 贡献者:xxianghe

  • 原因:美颜处理不同分辨率切换裁剪时长宽没设置导致,加上[self.preProcessor setCropRect:CGRectMake(0, 0,frameData.frameDesc.width, frameData.frameDesc.height)];后正常。
- (void)OnLocalVideoPreProcess:(QAVVideoFrame *)frameData
{
    //设置美颜、美白、红润等参数
    [self.preProcessor setOutputSize:CGSizeMake(frameData.frameDesc.width, frameData.frameDesc.height)];
    [self.preProcessor setCropRect:CGRectMake(0, 0,frameData.frameDesc.width, frameData.frameDesc.height)];
    //开始预处理
    [self.preProcessor processFrame:frameData.data width:frameData.frameDesc.width height:frameData.frameDesc.height orientation:TXE_ROTATION_90 inputFormat:TXE_FRAME_FORMAT_NV12 outputFormat:TXE_FRAME_FORMAT_NV12];
    //将处理完的数据拷贝到原来的地址空间,如果是同步处理,此时会先执行(4)
    if(self.processorBytes)
    {
        memcpy(frameData.data, self.processorBytes, frameData.frameDesc.width * frameData.frameDesc.height * 3 / 2);
    }
}

调用ilivesdk接口返回1007错误码(AV_ERR_NOT_IN_MAIN_THREAD 不在主线程)

发布时间:2018年9月12日 更新时间:2018年9月12日 贡献者:xxianghe

  • 建议SDK所有接口都在主线程调用,要不然报这个错误。

PC的iLiveView已经设置渲染拉伸模式是为自适应控件大小,但是画面内还是存在黑边,这是什么原因?

发布时间:2018年9月17日 更新时间:2018年9月17日 贡献者:xxianghe

  • 确认摄像头是否支持这个分辨率,摄像头不支持角色里配置的分辨率,那就会黑边填充了。

iOS12兼容问题

发布时间:2018年9月26日 更新时间:2018年9月26日 贡献者:xxianghe

  • 1、iLiveSDK什么时候支持iOS12 ?iOS12中移除了libstdc++.6.tbd这个库,由libc++这个库取而代之,目前SDK还依赖这个libstdc++.6.tbd库

  方案一:已经支持iOS 12,可以升级到当前最新的ILiveSDK 1.9.4.14037,请点击下载SDK

[注意]项目中要移除libstdc++.6.tbd库

  方案二:如果不想升级iLiveSDK,可以从XCode9的目录里,把缺失的.tbd文件拷贝过来,要记得拷贝2套,一套是模拟器的,一套是设备的,可以简单的用下面的命令:

cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.* /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

[附] libstdc++.6和libstdc++6.0.9库

  • 2、更新到XCode 10,使用最新的ILiveSDK 1.9.4.14037后,运行报Multiple commands produce '/Users/usher/Library/Developer/Xcode/DerivedData/TILLiveSDKShow-downyijounblvahguetejhbkjlzp/Build/Products/Debug-iphoneos/TILLiveSDKShow.app/params.wmc',BeautySDK里的两个资源文件重名了

  XCode 10的新特性:即便文件不在同一个目录下,使用同一名字的文件也会报文件重复。临时解决方案:参考Stack Overflow中Xcode 10 Error: Multiple commands produce,修改Xcode编译配置Xcode->File->Project Settings/Workspace Setting-> Build System -> Legacy Build System。


账号被踢问题,登录时报errId:8050/6208, errMsg:Kicked off by other device, please login again

发布时间:2018年9月27日 更新时间:2018年9月27日 贡献者:xxianghe

  • 1、同一设备如果账号上次没有登出,处于离线状态,再次登录同一账号时会出现自己踢自己的情况。

    解决方法:每次登录前登出一次可以避免自己踢自己的情况。

  • 2、如果是多台设备间互踢,收到被踢回调后,可以重新登录一次。


新建的实时音视频/互动直播/云通信应用,登录时报6012或-5 lssdk exchange ticket fail ,进房时报10036

发布时间:2018年10月23日 更新时间:2018年10月23日 贡献者:xxianghe

  • 由于云通信(imsdk)2018-09-14推出了新的计费规则,新建的应用要先买对应的套餐包后才能正常使用,老的应用不受影响

  • 登录报6012或-5 lssdk exchange ticket fail,是因为没有购买IM 套餐包-入门版或者IM 套餐包-专业版,购买后可以正常登录

  • 进房时报10036,是因为ilivesdk 1.9.4之前的版本默认使用的avchatroom,avchatroom这个是控制型功能包里面的功能,需要购买控制型功能包才能使用;或者进房时设置群组类型为public,roomOption.groupType=@“public”,这样就不用购买控制型功能包

  • 建议用户看下云通信收费标准,根据自己的实际情况购买对应的套餐包


实时音视频/互动直播的BeautySDK和移动直播的TXLiteAVSDK_Professional美颜包冲突问题

发布时间:2018年10月26日 更新时间:2018年10月26日 贡献者:xxianghe

  • 先删掉BeautySDK里这三个.a文件,“libTXMBasic.a”、“libTXMRenderer.a”、“libTXMVideoPreprocessor.a”
  • 然后定义一个变量,@property (nonatomic, assign) CMSampleBufferRef ret;
  • 参考下面的美颜接口:
- (void)OnLocalVideoPreProcess:(QAVVideoFrame *)frameData
{
    //设置美颜、美白、红润等参数
//    [self.preProcessor setOutputSize:CGSizeMake(frameData.frameDesc.width, frameData.frameDesc.height)];
//    [self.preProcessor setCropRect:CGRectMake(0, 0,frameData.frameDesc.width, frameData.frameDesc.height)];
//    //开始预处理
//    [self.preProcessor processFrame:frameData.data width:frameData.frameDesc.width height:frameData.frameDesc.height orientation:TXE_ROTATION_0 inputFormat:TXE_FRAME_FORMAT_NV12 outputFormat:TXE_FRAME_FORMAT_NV12];
//    //将处理完的数据拷贝到原来的地址空间,如果是同步处理,此时会先执行(4)
//    if(self.processorBytes)
//    {
//        memcpy(frameData.data, self.processorBytes, frameData.frameDesc.width * frameData.frameDesc.height * 3 / 2);
//    }
}

- (void)OnLocalVideoRawSampleBuf:(CMSampleBufferRef)buf result:(CMSampleBufferRef *)ret
{
    CVPixelBufferRef ref =  CMSampleBufferGetImageBuffer(*ret);
    [self.preProcessor processFrame:buf orientation:TXE_ROTATION_0 outputFormat:TXE_FRAME_FORMAT_NV12];
    *ret = self.ret;
}

- (void)OnVideoPreview:(QAVVideoFrame *)frameData
{
    //仅仅是为了打log
    NSString *key = frameData.identifier;
    QAVFrameDesc *desc = [[QAVFrameDesc alloc] init];
    desc.width = frameData.frameDesc.width;
    desc.height = frameData.frameDesc.height;
    [_parView.resolutionDic setObject:desc forKey:key];
}

- (void)didProcessFrame:(CMSampleBufferRef)sampleBuffer timeStamp:(UInt64)timeStamp
{
    CVPixelBufferRef ref =  CMSampleBufferGetImageBuffer(sampleBuffer);
    self.ret = sampleBuffer;
}

- (void)didProcessFrame:(Byte *)bytes width:(NSInteger)width height:(NSInteger)height format:(TXEFrameFormat)format timeStamp:(UInt64)timeStamp
{
    self.processorBytes = bytes;
}

PC使用屏幕分享时,发起的窗口分享,本地采集的窗口是不全的,观众也看不全

发布时间:2018年11月30日 更新时间:2018年11月30日 贡献者:xxianghe

  • 确认用户是不是开了DPI,avsdk屏幕分享不支持DPI的,建议用户关掉

随心播demo里录制的视频,横竖屏切换时画面会先拉伸一下再恢复正常

发布时间:2018年12月26日 更新时间:2018年12月26日 贡献者:xxianghe

  • 这个是正常的,如果要规避的话,就需要在切换横竖屏时自己更新角度,而不能等重力感应自动更新,现在的角度就是变得不够快。

调这个设置设备角度,arvRoot.setDeviceRotation(90),具体参考旋转文档


results matching ""

    No results matching ""