常见问题

服务端


服务器端能支撑多大在线用户?产品的性能怎么样?

云信是一个提供高效可靠通讯云服务的平台,支持上亿用户量级的产品,系统架构保证弹性可扩展,并支持接入产品动态扩容。


关于我们的数据在云信上是否安全?

在云信上数据的传输和存储均有私有协议加密,存储的数据安全可靠。


我的用户都在国外,请问访问速度怎么样?

在国外的用户可以通过我们在AWS的云主机连通服务,云信在国外多地均有部署服务器,服务连通时优先选择最近的服务器以保证访问速度。


登录中的token和我的帐号密码是什么关系,我如何维护token?

token是产品应用与云信平台鉴权的凭证,帐号密码则属于第三方产品应用帐号体系的范畴,两者之间存在的映射关系需要由应用的后台服务维护;我们的推荐做法是应用在用户第一次接入云信平台时通过云信后台接口为用户创建帐号和token,并将该组帐号和token与应用的帐号体系关联;后续访问云信平台时均需要用到该token,token的更新可以通过云信的服务器接口实现,更新策略可以由应用按照自己的安全策略决定。


为什么我不能通过客户端sdk创建账号,必须要通过服务端创建?

云信的账号体系和应用的账号体系是一个业务绑定的关系,创建账号在应用服务器进行可以有效控制账号的创建行为,任何应用的客户端都存在被破解的风险,如果直接通过客户端就可以创建云信账号可能会使您的应用出现被盗刷账号的情况。可能友商提供类似的客户端接口,使您在开发的时候节省了几行代码,但是为您的应用安全埋下了风险的种子。


云信的账号能不能删除,accid可不可以就是我业务系统的账号?

云信的账号是不允许删除的,但是如果您不想使用这个账号,可以通过服务端接口将账号禁用。我们不禁止开发者直接将业务系统的uid或account作为云信的accid来注册,但是我们不推荐这么做。我们推荐开发者在创建云信账号时使用随机字串等与应用业务无强关联的字串作为云信accid,再在应用自己的服务器端维护业务uid与云信accid的关联关系。


我有上百万的存量用户账号,你们能提供批量导账号的方法吗?

云信的收费方式取决于应用的活跃用户,对于任何应用的账号接入,我们推荐遵从“按需创建”的原则。您的上百万账号中可能存在相当比例的僵尸用户或非活跃用户,在迁入云信时直接全量导入对您是一种不必须要的开销。您可以在用户第一次触发使用云信的IM行为时检查该用户的云信是否创建了accid,如未创建则后台自动创建再登陆,这种方式会使您的用户只有在必要的时候才会创建云信的账号,同时在云信中创建的用户都是有效的活跃用户。虽然这种方式会让您在云信中的注册用户量下降,但是帮你节省了支付给云信的费用,作为有态度的服务提供方,我们还是将最佳实践方式推荐给您。


我通过server端接口注册的账号会不会出现在我的管理后台呢?

通过server端注册的帐号不会出现在管理后台。


server端发消息例子里面的md5是什么?

Alt text 这个md5是根据文件内容,如图片、语音等,用Md5加密算法计算


接入


如何接入你们的平台?集成云信的大概流程是怎样?

接入我们的平台只需要四个步骤即可, 第一步,注册成为网易云信开发者 第二步,创建应用 第三步,用户体系集成 第四步,下载SDK并集成 详细可参见新手接入


用云信开发即时通讯是必须要用你们的服务器和数据库吗?

不需要。网易云信的集成,通过在客户端集成SDK的形式来连接网易云信的云端服务。应用本身的业务逻辑和实际部署,还是跟传统开发完全一样,由开发团队自己维护部署即可。


AppKey从哪获得?

注册并激活云信开发者帐号后,登录云信管理后台,创建应用后在“APP Key”页面得到。详情参见APPKey信息


怎么创建用户?

测试应用可以在注册开发者帐号后登录管理后台创建测试用户,也可以参照开发手册中Server文档的创建账号接口来创建用户。线上应用只能通过接口创建用户,可查看接口说明


多端互踢的机制是什么样?什么时候会收到被踢的通知?

云信支持最基本的三种互踢策略:


为什么我不能通过客户端sdk创建账号,必须要通过服务端创建?

云信的账号体系和应用的账号体系是一个业务绑定的关系,通过应用服务器才能创建账号可以有效控制账号的创建行为,任何应用的客户端都存在被破解的风险,如果直接通过客户端就可以创建云信账号可能会使您的应用出现被盗刷账号的情况(可能友商提供类似的客户端接口,使您在开发时节省了几行代码,但是为您的应用安全埋下了风险的种子);


数据加密和压缩等问题

PC: 与服务器通讯的和本地缓存的所有文本数据都有压缩和加密。
iOS: 本地聊天数据只有表名(即会话名)加密,图片消息默认压缩为jpeg,压缩质量参数0.5(这个可以上层自由配置),视频音频均不压缩。和服务器通信的文本数据都有压缩和加密。
WEB: 只存储文本数据,不存储图片、音视频(所以就没有数据压缩)。数据不加密,浏览器自己有同源限制(安全限制)。
Android: Android本地聊天数据不加密,图片消息(图片与文件一样上传)不压缩,视频音频不压缩。和服务器通信的文本数据都有压缩和加密。 各端均不限制收发消息频率


如何集成云信账号体系

你的用户在客户端注册到您的服务器,您的服务器保存了这个账号,再调用我们服务端注册云信ID的接口生成云信ID和token,这个时候将用户注册的账号和云信ID绑定,用户登陆的时候就先登陆他注册的账号,到您的服务器拿到绑定的云信ID和token去客户端登陆云信。这里有两套账户体系


Demo


demo登录失败怎么解决?

demo的帐号是登录云信管理后台在云信Demo应用下的帐号管理页面上创建的。请确认已经正确创建了demo帐号,并在demo客户端上登录时,使用了该demo帐号所对应的正确token。如果是自己编译打包的开发者,请确认并未修改源码包中的appkey配置。


如何快速基于Demo源码开发自己的应用 ?


修改了demo的appkey,用注册的账号登录显示302密码错误 ?

DEMO 中登录采用对密码进行 MD5 操作,来模拟 从APP 服务器获取 Token 的流程。而对于用户自己注册的 APP,则不需要这个流程,直接传入云信管理后台创建的帐号密码即可。但不建议您直接将用户的帐号密码等暴露到云信服务中(尽管我们对业务方存储在云信的数据采用安全可靠的保护措施,不存在泄露风险,但是作为有态度的服务提供方,我们还是推荐您们也适当保护自己的数据), 推荐采用无关联的帐号和Token来绑定云信用户,并在登录时加上从应用服务器上获取云信帐号和 Token 的流程。


我下载的demo连不上服务器,有没有特定端口需要配置?

检查你所处的网络防火墙是否允许访问外部服务器的8080端口。


demo改了appkey为什么不能注册也不能获取聊天室列表?

demo使用的是demo的appkey,其注册走的是demo的服务器。而更换了appkey之后,demo的服务器不识别更好后的appkey所以注册失败。(注册即创建云信ID是服务端接口)。同理,获取聊天室列表也是从demo的服务器中获取。


为什么android从对方接来的excel下载不了?

android的demo只做收发的演示,下载跟下载图片接口都一样,调downlodAttachment,因为没有系统的文件选择器这种东西,要选择文件保存到哪里,这个需您自己做一下。 IOS的demo是可以查看并下载发来的文件比如excel、word。


iOS版SDK


iOS SDK 兼容 ATS

前言

随着苹果在 2017.1.1 推出的新政,App 将不在允许直接使用 Allow Arbitrary Loads = YES 对所有域名进行规避的方案。基于此,云信 iOS SDK 也做了相应的兼容处理。

我们做了什么

云信 SDK 主要提供 IM 相关的功能,其内部实现为基于 TCP 自主加密的协议,这方面并不需要做任何适配工作。而为保证整个 IM 功能的完整性,云信也内置了文件传输的功能,包括但不限于:消息内附件,用户头像,群主头像等信息。在旧版本,这些文件都是以 HTTP 请求的方式上传至服务器。这显然不符合苹果的规定。所以在新版本,我们文件传输进行了升级,上传下载一律采用 HTTPS 进行传输。

上层开发者需要做什么

在我们做完上面更新后,上层开发者可以直接使用我们的新 iOS SDK,而不需要再 plist 中进行任何 ATS 相关的设置。

但是云信是个多端产品,虽然 iOS 能够保证完全兼容 HTTPS,但其他端仍未完全兼容 HTTPS,从这些端收到的文件 URL 仍旧是使用 HTTP(当然还有老版本的问题)。所以上层开发者如果有某些特殊化的使用场景,则需要自行进行兼容。

云信中使用到文件信息的地方包括:

前四种消息附件 iOS SDK 已经完成完全的兼容处理:自动将其他端发送文件附件 URLHTTP 转换为 HTTPS格式。

而自定义消息,由于整个类结构是由上层决定,iOS SDK 并不能智能完成这部分消息的附件 URL 格式的自动转换,需要上层用户做相应的处理。在 id 中定义了一个将云信连接从 HTTP 转为 HTTPS 的接口:convertHttpToHttps:,在需要下载该文件的地方,先进行转换即可。具体参考 demo 中下载阅后即焚的实现。需要注意的是,如果某种自定义消息需要由 SDK 接管附件下载,那么需要在 NIMCsutomAttachment 协议 attachmentURLStringForDownloading 处理 HTTPHTTPS 的转换过程。

后三种头像信息,如果上层开发直接使用云信头像,那么不需要做任何处理。如果使用自己服务器的文件地址,那么需要设置 NIMSDKCofig 中的 enableHttpsForInfoNO


集成iOS NIM SDK的最低要求?

SDK 最低支持 7.0,Xcode 版本要求 8.0 以上。


iOS Demo打开编译失败?


集成碰到问题,如何解决?

推荐按照开发者如下顺序进行排查:


SDK过大怎么办?

由于 NIM SDK 是静态库,且为了方便开发者使用,我们将armv7 i386 x86_64 arm64平台 的静 态库合并成一个Fat Library,导致整个 SDK 比较大。但实际编译时会根据调用功能多少增加 ipa 文件大小,实测大约只会增加2-3M左右。


登录失败怎么处理?

登录接口回调方法中包含错误信息,请检查[error code],常见的错误码有 :


iOS如何快速实现一个聊天窗口界面?

从头开始实现一个聊天窗口的代码量大约在 5 千行左右且有各种坑需要处理,推荐直接使用云 信中的UI库 NIMKit ,或者使用一些开源的解决方案,如JSQMessage。


APP退到后台后无法收到消息和通知?

由于 iOS 系统的限制,大部分 APP 并不能支持后台运行,所以在 APP 退到后台后几秒到几分 钟后 APP 就被挂起,无法收取任何消息。在这种情况下所有的消息和通知都是通过推送 (APNS) 来通知用户。只有在用户收到推送并打开 APP 后,SDK 才会自动重连上服务器并拉取 离线的消息和通知。


APP退到后台无法收到推送消息?

并不是接入 NIM SDK 后苹果推送 (APNS) 就会自动生效,为了使之生效,开发需要做如下配 置 :


IOS的SDK由于缓存较大 上架时候被拒,能不能设置不同步icloud?

我们的SDK目录就是设置成默认不备份。“可以去读取下 $Documents/NIMSDK 下面的两个子目录Users和Global目录的属性,他们都是有NSURLIsExcludedFromBackupKey这个file attributes,而且都是YES”


Android版SDK


SDK初始化操作必须放在Application的onCreate中吗?

是的。因为典型情况下,云信的service会工作在push进程,当push进程从后台自动启动时,除了Application的onCreate,就没有其他机会去初始化SDK了。当然,如果您将云信的service和主UI进程放在一起,且不要求后台自动登录,那么可以在您觉得合适的地方去初始化。


想做一个@某人的效果,如何做?


未读数怎么清零?


为什么发出自定义通知后,没有触发我的receiver?

    请检查一下是否
        <permission android:name="com.netease.nim.demo.permission.RECEIVE_MSG" android:protectionLevel="signature"/> 
    和
        <uses-permission android:name="com.netease.nim.demo.permission.RECEIVE_MSG"/> 
    都添加到了manifest文件中,第一项为声明权限,第二项为声明要使用该权限,二者缺一不可。


消息发送失败,如何重发此条消息?

发消息API:sendMessage(IMMessage msg, boolean resend); 仔细看参数,后面的boolean表示重发消息。


如何判断attachment的发送状态?

def 未下载 ,跟失败一样,都可以用 downloadAttachment重新下载。


我们用自己的V7包可以么?

如果使用我们的uikit的话,那么v7包就要用我们的版本,我们的是基于v7 19的,如果用其他版本(21/23),会引起冲突。


PC版SDK


集成NIM Windows客户端SDK的最低要求?

Windows客户端 SDK是VC2010开发的,使用方式是APP开发者通过动态加载SDK DLL使用,只要在发布的应用程序中带上msvcr100.dll 和 msvcp100.dll两个运行库即可,因此对集成SDK无最低要求,建议vc版本越高越好。


Windows客户端如何使用自定义的用户数据目录?

Windows客户端 SDK本身提供用户自定义数据目录文件路径,只需用户在初始化SDK时传入绝对路径,但是,这里需要注意的是,Windows 7开始对系统盘下面的目录是有很强的权限控制的,使用不当极易导致用户数据无法正常读写,因此建议APP开发者尽量将用户数据目录放在系统本地应用数据目录下

%LOCALAPPDATA%,
     WIN7即以上在系统盘C:\Users\<user name>\AppData\Local,
     WIN XP/2000在C:\Documents and Settings\ <user name>\Local Settings\Application Data

具体使用方法就是在只要在初始化SDK时传入目录名字,SDK即会在系统本地应用数据目录下创建相应的文件目录作为用户数据目录。


Windows客户端的SDK 支持哪些开发语言 ?

Windows客户端 SDK开放的是C接口,因此常见的桌面开发语言都可以调用,比如C++,Java,VB,C#,Javascript,Python等。


Web版SDK


SDK 兼容老版本浏览器吗?

目前 SDK 兼容到 IE8, IE8/IE9 使用 xhr-polling 来模拟长连接, 其它高级浏览器使用 WebSocket 建立长连接。


文件上传兼容老版本浏览器吗?

目前文件上传兼容到 IE8, IE8/IE9 使用 Iframe 上传文件, 其它高级浏览器使用 FormData 上传文件。


消息


都有什么消息类型,是否支持自己的自定义消息类型?

云信原生支持了文本,图片,语音,视频和地理位置等常用的消息类型;对于产品的特殊需求云信也提供自定义消息类型,产品可以使用自定义消息实现“阅后即焚”等特殊的消息类型。


云信发送的图片缩略图和原图是什么样的一个比例?

iOS:长宽等比缩放,2倍显示屏幕上,短边缩到150为止。iPhone4以上到除了plus,都是2倍屏幕 所谓的Retina,plus系列是三倍屏幕,就是说plus上会是225为止。iPhone 3gs以及以下,是一倍屏幕到75为止;
Android:在SDKOption#thumbSize中设置一个宽度,等比例缩放。一般来说是会话窗口里面图片那个气泡的宽度大小。也可以简单设置成 屏幕宽度的一半。


是否能指定不接受来自特定用户或特定群的消息?

云信提供基于自己的好友体系的黑名单功能。同样也提供了修改群消息通知的接口。详见如下文档: iOS消息提醒 iOS群消息提醒


消息历史记录保存多久 ,如何获取?

SDK会保存一份本地消息历史记录,并提供了删除和查询的接口,由应用自己管理。云信服务端提供保存服务端保存历史记录的服务。该服务占用服务端存储资源,是一项收费服务,最长可以保存3年。服务端保存的历史记录,同样提供查询接口供应用使用。


管理后台向用户(或群)发系统消息如何实现?


消息长度有没有限制 ?

云信的消息长度限制为5000字符。


云信语音消息的音频文件和视频消息的视频文件分别是什么格式

对于语音,视频消息而言,云信只负责提供文件的上传和消息投递,所以音频使用任何格式都 可以。但是推荐使用云信提供的接口进行音频的录制和播放,因为我们提供了高清语音录制方 法,语音清晰度远超同类产品。使用云信提供的接口进行音频录制时限定的格式为aac。


云信如何发表情?

聊天时的表情其实就是字符串,通过一定规则的映射显示不同的图片即可。具体可以参考云信 DEMO中的实现。


能不能限制只发送文本消息,不要发送图片和文件

可以的,这个功能在上层中可以限制,限制只发送文本消息,不能发送图片和文件消息,而且我们提供的是一个平台根据您的需要可以删减任何不需要的功能。


Demo的卸载重装消息的问题

1)每次卸载重装都会产生新的设备ID,然后登录上来,服务器会漫游100个会话(每个会话100条曾经收发的消息)过来。
2)android这边其实并不卸载,就清理数据,但是也会重新生成一个设备ID,登录上来之后,也会收到漫游。比如说,我在android设备上登录了,发了“hello world”,然后我去清理一把应用的数据,在去登录,服务器就去漫游“hello world”过来。
3)漫游是服务器管理的,跟客户端并没有关系,但是客户端要记得就是去系统里清理应用数据,也会漫游的,反正就是SDK的db被清空了,就会漫游过来。或者另外一种情况:用户去设置应用管理里面,可以清理掉,一个app产生的数据,这时候在登录,也会漫游的。 只要产生新的设备ID,就会有漫游。


会话列表及漫游消息详解

各端获取最近会话列表均从本地数据拿。获取的列表数量没有上限。 会影响本地数据的情况: 1、应用执行过删除会话接口。 2、换了新手机,或者清除过云信本地数据。 3、开启漫游的情况, 服务端会同步漫游数据到本地数据库。


漫游详情

漫游消息现在线上的配置是100个会话,每个会话最新100条,最近7天 其他细节: 1、Web高级浏览器(支持本地数据库的),也会和其他客户端一样,具有本地历史数据。


群组


群成员上限是多少,群数量上限是多少?

云信产品默认每个用户可以创建50个普通群,每个群最多200个成员,可以创建50个高级群,每个群最多200个成员,对于产品的特殊需求我们可以支持群数量和群容量的扩容。


服务端接口创建了群,并指定了成员,成功后查询群成员只能看到群主自己?

创建群的接口有参数“magree”表示“是否需要群成员同意”,如果你建了群只能看到自己,请首先检查这个参数,如果选择了该选项,只有在被邀请者同意之后才会出现在群成员列表中。


SDK是否提供设置群容量的接口?管理后台可以设置么?

SDK不提供该接口。管理后台暂时不可设置,后续会考虑提供。


高级群和普通群的区别?


高级群群主执行quitTeam是否会成功?是否会解散群?

高级群主执行quitTeam不会成功,不会解散群。群主要退群需要将群主权限转让给群里指定成员或直接解散群。


退群后我希望把最近联系人列表的记录也删掉,该怎么做?

删除最近联系人记录有两个接口,分别是deleteRecentContact和deleteRecentContact2,其中第一个接口以RecentContact类型作为参数,调用后不会再触发观察者通知,适合在最近联系人列表调用。第二个接口以account和sessionType作为参数,删除成功后会触发MsgServiceObserver的observeRecentContactDeleted通知。因此你可以调用第二个接口,并在最近联系人列表上添加删除事件的观察者。


聊天室


有获取聊天室管理员列表的接口吗?

目前还没有直接能获取的接口,不过建议您先获取聊天室成员之后,根据成员的memberType去检索出来成员身份。


聊天室收发消息和IM普通有什么不同吗?

聊天室消息收发接口与普通消息收发统一,在发送消息时指定会话类型为聊天室即可。会话 id 即为聊天室 id。但聊天室的消息,SDK对收到的消息是有做合并的,而其他IM消息,只有离线消息和漫游消息会从服务器批量下来。


聊天室在线人数怎么获取?

用户进入聊天室后可以通过获取聊天室信息获取聊天室内的在线人数。聊天室内的成员进出,云信服务器会客户端下发一条进出类型的通知类消息,客户端再根据通知类消息实时加减聊天室在线人数。 聊天室其他内容可参见云信聊天室 FAQ


音视频与白板


音视频支持的分辨率?

分为流畅(176X144)、标清(352x288)、高清(480X320)、超清(640X480)


用音视频一分钟会消耗多少流量?

流畅:150MB/小时 = 0.333Mbps (带宽) 标清:260MB/小时 = 0.578Mbps (带宽) 高清:320MB/小时 = 0.711Mbps (带宽) 超清:400MB/小时 = 0.889Mbps (带宽) 音频通话:32MB/小时 = 0.071Mbps 这些流量在不同网络和机型下还略有区别,在移动网络下会低一些


了解一下硬编和软编的概念

硬编:硬件编码 软编:软件编码(H264库,目前我们采用软编)


你们的码率是多少?

最低码率是100Kb,最高码率是400Kb(根据网络动态调整)。


实时音频编码是哪些?

G7111(最耗流量,最少运算量)
ILBC(中间)
OPUS(最省流量,运算量最大,但是效果好,目前我们采用OPUS)


你们的帧率是多少?

帧率是15帧,当然这个可以调整,其中15帧,1帧是I帧,14帧是P帧。 I帧表示关键帧,可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)。 P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)


短信


短信的介绍

短信服务(Short Message Service)是网易云信为用户提供的一种通信服务的能力,目前支持验证码类短信、通知类短信、运营类短信、语音类短信(即将上线)等是事务性短信。

网易云信短信功能具体有全网覆盖、3-5 秒可达、超高到达率、7*24 小时服务监控等优势。

按量付费、阶梯定价,发送越多单价越低。API调用简单,加快接入速度。

快速稳定

三网合一通道;专线机房,支持大容量、高并发;99%到达率; 7*24 小时服务,电信级运维保障,实施监控自动切换;

简单易用

API简单易用,接入更快速; 数据统计齐全,发送状态报告即时返回; 管理后台功能完善,易上手;

价格低

按需付费,发送成功产生计费; 阶梯定价,发送越多单价越低,越划算;


购买的流程

登录网易云信官网,依次进入 产品 -> 短信 ,单击 短信短信 进入产品页;

或直接访问短信服务产品页面。

选择 相应的短信资源包进行购买,购买完成后进入短信服务控制台开始使用。


短信的计费方法

1、短信服务是按照短信发送成功量计费,目前的付费方式为资源包计费。

2、扣减方式:购买的资源包在有效期内,优先抵扣资源包内的短信量,多个资源包按有效期先结束的优先扣减, 当所有资源包扣减完毕后关闭短信功能,续费后将自动开启短信功能。

3、短信账单为月账单的形式,统计出当月实际短信消耗条数,发送失败的条数以短信条数返还到用户短信资源包中, 返还顺序为按扣款顺序逆序返还。


短信的资源包

短信的资源包?

1、资源包是预付费方式,支付费用购买成功后,在有效期范围内可使用资源包。

2、资源包有效期:每个资源包的有效期独立计算,多个资源包有效期不会叠加

3、短信资源包购买后不支持退订、不支持退款,资源包有效期到期后不可用。 自选资源包价格:


短信购买条数(条) 单价(元/条)
0w≤X≤10w 0.045
10w < X ≤ 30w 0.040
30w < X ≤ 50w 0.039
50w < X ≤ 100w 0.038
100w < X ≤ 300w 0.037
X > 300w 0.036


付费周期和欠费

对于后付费产品,当用户产生费用后,进行累计计费,每个月月底进行扣费。

当您的账户余额不足以支付账单金额,网易云将暂停为您提供服务。当您充值并补足欠费后,服务会自动开启,可以继续使用。

当用户为欠费状态时,需要尽快进行充值,以便影响您的正常业务。

当用户余额不足时,系统会给账号的注册手机发送短信通知,进行提取告知。


短信计算规则内容?

云信短信计费包括短信签名,70字计1条短信费,超过70字则以67字每条计费,当短信中出现中文字符,则单个汉字、英文、标点和空格等都算一个字。


短信的计费模式?

云信短信按照用户实际使用情况进行实时计费,出月账单时会统计用户上个月的短信发送状态,对运营商返回短信发送成功状态的短信和未返回发送状态的短信进行扣费,对返回状态为发送失败的短信根据失败条数进行短信量反充。


短信发送失败,还是会扣费吗?

接口调用失败及运营商返回失败状态,都不会扣费。


短信发送频率上有什么样的限制?


短信显示号码及显号规则?

手机端接收显示的号码是106开头的正规号码 显号规则:


短信提供哪些功能?

目前支持短信下行发送、短信状态报告回执、帐单查询等;暂不支持短信上行发送。


短信发送成功,但实际未能收到短信是什么原因?


短信发送状态回执哪里查看?


短信三网都可发送吗,能发送海外/港澳台吗?

支持三网发送,目前海外/港澳台暂不支持,敬请期待。


短信字数最多能发多少个字?

最大支持发送300个字以内的短信。


变量可传字符长度为多少个字?

网易云信提供的模板短信由固定内容与多个变量构成,其中 " %s " 为需要接口替换的变量,变量内容可以是汉字、字母、数字或者特殊字符组合,但单个变量内容长度不得超过30个字。


变量中可直接写链接吗?

变量中不允许传链接,包含短链接;建议将已ICP备案的网址写于短信模板非变量内容中,审核通过后可发送。


为什么传进来的验证码首位不支持0?

云信模版短信参数仅支持string类型,如果使用int类型则首位的0会被省去。


如何有效防止短信轰炸?

短信轰炸指在短时间内通过恶意程序,批量.循环给一批手机号码无限发送各种无效短信的行为,导致接收短信的手机用户被骚扰 ,给业务方造成品牌及业务不良影响,设置有效业务流控,以下为云信业务流控:


发送短信验证码为什么数字后面会出现“.0”?

json格式请使用string类型。


支持同时发多个手机吗?

支持,建议一次最多可提交200个手机号码,以防发送失败。


API调用次数有没有限制?

创建应用即可获得100万次的每日调用


其他


云信都提供哪些功能服务?


云信的收费标准,价格怎么样?

我们的云信服务针对不同的业务,有不同的报价单,您可以先注册试用,再联系我们商讨价格问题。


云信售后服务怎么样?

网易云信团队拥有10年以上的IM开发及运营经验,数名业界资深专家、高级工程师保障IM云服务的高品质运作,提供7*24小时的实时运维服务。


日活数里的日活是什么定义?

“日活”即“日活跃用户数”,指一个自然日内与云信服务器成功进行业务行为交互的用户总数,业务行为包含但不局限于(登录、重连、消息行为、群组行为、好友行为、个人信息行为),同一个用户在一个自然天内有多次业务行为交互只统计一次。每个产品(应用)的日活分别统计。


云信是否支持推送?

云信提供移动端消息推送的能力。即用户应用在后台时可以通过通知栏提醒的方式告知用户消息到达。云信推送针对云信ID,即需指定对方id投递消息或通知。


为什么我退到后台以后,系统推送屏幕不会亮

iOS的APNS推送,退到后台,是可以点亮推送的。Android的推送因为谷歌退出中国市场的缘故,导致推送功能并没有像苹果的APNS推送那么完善,但是我们工程师经过优化,可以保证进程在的时候,可以实时收到推送,只是Android的Demo点亮屏幕没有顺手做了,所以这个需要开发者上层自行实现。


SDK日志存放路径

安卓: /外卡根目录/{app_package_name}/nim/log/nim_sdk.log

iOS: {Documents}/NIMSDK/Log 也可以调用 [[NIMSDK sharedSDK] currentLogFilepath] 来获取当前log文件地址
真机:window-》device-》自己的机器-》自己的沙盒-》里面有个像齿轮一样的东西-》downLoad

PC: 数据缓存目录默认为"{系统的AppData 目录}{App 传入的目录名}\NIM{某个用户对应的用户数据目录}”,还可以由App 完全自定义用户数据目录,需要传入完整的路径,并确保读写权限正确。


点击跳转到对应会话页面的问题

ios: 如果收到推送的时候,程序还没死

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
   //拿userinfo的payload做跳转
}

    如果收到推送的时候,程序死了
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 //拿launchOptions里的payload做跳转
}
Android:( demo/main/activity/WelcomeActivity )
    /**
    * 通知栏跳转提醒
    * @param intent
    */
   private void parseNotifyIntent(Intent intent) {
        ArrayList<IMMessage> messages = (ArrayList<IMMessage>) intent.getSerializableExtra(NimIntent.EXTRA_NOTIFY_CONTENT);
        if (messages == null || messages.size() > 1) {
            showMainActivity(null);
        } else {
            showMainActivity(new Intent().putExtra(NimIntent.EXTRA_NOTIFY_CONTENT, messages.get(0)));
        }
    }


自定义消息与自定义通知的区别

自定义通知:

    1. 消息格式由第三方 APP 自己定义,只要内容是 String 就可以了。
    2. 第三方 APP 的客户端和服务器均可以发送自定义通知。
    3. 接收对象可以是个人,也可以是群组。
    4. 可设置通知的到达级别:保证必达,或是通知接收者只有当前在线才能收到。
    5. 如果需要向 iOS 用户推送,可自定义 iOS 的推送内容。

自定义消息: 自定义消息采用附件的方式展示给开发者。体现在 IMMessage类中,自定义消息的内容会被解析为 MsgAttachment对象, 由于 SDK 并不知道自定义消息的格式, 第三方 APP 需要注册一个自定义消息解析器。

自定义通知和自定义消息的不同之处在于:

    1. 自定义消息归属于网易云信的消息体系内,适用于会话中,由 SDK 存储在消息数据库中,与网易云信的其他内建消息类型一同展现给用户。
    2. 自定义通知主要用于第三方的一些事件状态通知,网易云信不存储,也不解释这些通知,网易云信仅仅负责替第三方传递和通知这些事件,起到透传的作用。


云信是否支持陌生人聊天及匿名登录?

云信支持陌生人聊天。匿名登录基于云信的实现是后台分配特殊的云信账号供用户登录使用。


sdk有多大

iOS:29M (不包含音视频 ) Android:3M (不包含音视频 ) PC:6.9M WEB:0.6M iOS由于 SDK 是静态库,为方便开发者使用,我们将 armv7 i386 x86_64 arm64 平台的静态库合并成一个 Fat Library ,导致整个 SDK 比较大。但实际编译时会根据调用功能多少增加 ipa 文件大小,实测大约只会增加 6-10M 左右。


直播点播通用问题


影响直播效果的因素有哪些?

直播需要经过下列过程:
Ⅰ 推流部分:从主播设备到推流服务器
Ⅱ 拉流部分:从拉流服务器到观众设备

影响直播效果的具体因素包括:
1 主播设备 和 6 观众设备

2 主播网络 和 5 观众网络

3 推流服务器 和 4 拉流服务器


推拉流过程出现问题怎么办?

根据您遇到的问题:

如果问题是可复现的,请提供以下相关信息:
①您的设备信息

②Demo或SDK信息
Demo或SDK的类型、版本号

③请描述问题的触发条件、操作步骤、接口调用顺序。

④请提供问题相关的程序代码、报错信息、错误日志、时间节点。

我们将根据您提供的信息,进行排查分析,尽快向您反馈结果。


怎么查看直播推流和播放器SDK版本号?

各SDK获取版本号的接口如下:

初始化实例以后,在实例下调用对应方法。


推流分辨率和码率(带宽)建议?

推流分辨率和码率(带宽)存在对应关系。
如果设置的码率(带宽)过低,则无法保证传输的视频质量;
如果设置的码率(带宽)过高,则对网络带宽质量要求较高。
建议的对应关系如下:

编码分辨率和帧率 码率 示例
1280*720@20fps 1500kbps Android推流Demo,HD
960*720@20fps 1000kbps
960*540@20fps 800kbps
960*540@15fps 650kbps iOS推流Demo,LS_VIDEO_QUALITY_SUPER
640*480@20fps 600kbps Android推流Demo,SD
640*480@15fps 500kbps iOS推流Demo,LS_VIDEO_QUALITY_HIGH
640*360@20fps 500kbps
480*360@15fps 300kbps iOS推流Demo,LS_VIDEO_QUALITY_MEDIUM
320*240@15fps 250kbps Android推流Demo,Fluency


观众端如何和主播端同步直播状态,以提升用户体验?

默认情况下,观众端播放器SDK不会和主播端直播推流SDK同步直播状态。
如果可以拉流,则正常播放;如果拉流失败,则等到30秒钟后超时,报告播放失败。(Android/iOS/Web播放器都可以自定义超时时间)

如果要同步直播状态,提升用户体验,则需结合您的应用服务器(AppServer)来处理,参考方法如下:
应用服务器需要维护下列对应关系(以下仅为示例):
用户账号UserID — 直播间号码RoomID — 直播频道cid — 直播状态 LiveStatus。

异常处理:如果超过特定的预设时间,应用服务器仍然没有收到对应主播端发送的任何消息,可以再到网易服务器同步一下直播状态。如果网易服务器也返回该直播频道状态为“空闲”,可以判定主播已经异常结束。
(异常情况举例:手机没电,进程被杀,网络中断等,主播端任何消息都发不出来)

附:网易视频云获取频道状态的接口,具体请见:直播服务端API文档(2.4 获取频道状态)

建议1:直播大厅列表可以允许所有观众查询,直播间消息只需对特定直播间内的用户进行同步推送即可。
建议2:刷新直播大厅列表时,一般都有图片,需要把图片进行缓存,已下载的图片不要再重新下载,这样既提升加载速度,也节省下载流量。当达到预设的缓存空间上限,或者APP退出时,再清除图片缓存。


能否基于Demo直接修改开发?

Demo仅仅用于简单的、基本的功能展示,无法满足各种场景需求,更不是可以直接用于商用发布的最终产品。而且Demo有自己的内部逻辑,直接修改的话可能导致无法达到预期,甚至出现运行异常。
您应该仔细阅读我们的开发指南,参考Demo的部分代码,以及API文档,结合您的业务需求,集成SDK进行开发。


网易视频云有多少CDN节点?

全球500多个CDN节点。覆盖中国所有省市。


支持哪些直播源?

直播目前支持RTMP协议的推流,具体可以采用以下几种形式:


如何获取(主播/直播)推流地址和(观众/播放)拉流地址?

请到网易云信官方网站(https://netease.im)注册账号(网页右上角有注册按钮);

可以使用我们的各平台Demo来进行直播推流和播放测试。
Demo下载地址:http://netease.im/im-sdk-demo


关于推流地址和拉流地址(支持的直播协议)

目前支持的(主播/直播)推流地址为:

(观众/播放)拉流地址为:


各种播放环境支持哪些拉流地址

播放环境 RTMP HTTP-FLV HLS (m3u8) 备注
Android Demo/SDK
iOS Demo/SDK
Web Demo/SDK * * * *RTMP和HTTP-FLV协议需要Flash支持
HLS协议需要Flash或HTML5支持
第三方播放器 * * * *根据播放器解码支持情况
微信 - - * *微信使用HLS协议


各播放拉流协议的比较

协议 简介 延迟
RTMP
Real Time Messaging Protocol
Adobe的专利协议。
安装Flash Player即可播放。
是国内的主流直播协议。
RTMP基于TCP,默认使用端口1935。
2-5秒
HTTP-FLV
Hypertext Transfer Protocol
Flash Video
无需Adobe专利。
流式传输媒体内容。
使用HTTP协议,基本不受防火墙限制。
2-5秒
HLS
Http Live Streaming
苹果公司提出的基于HTTP的流媒体传输协议。
HTML5浏览器可以直接打开播放。
10秒左右


如果推拉流网络很差,或者网络中断,那么服务器上的直播和录制状态,以及拉流端的播放状态,保持时间是多长?


观众观看直播时能选择清晰度吗?

不能。直播时原样输出,没有实时转码。


播放视频时出现卡顿,常见原因有哪些?


能否使用OBS(Open Broadcaster Software)、FMLE(Flash Media Live Encoder)等第三方软件进行推流?

可以。请参考以下方法进行设置。


使用第三方软件直播推流,观众端使用HLS协议播放时,出现延迟较大或播放中断的情况,怎么解决?

请设置关键帧间隔为3秒。
例如,OBS 0.16.2 (64bit, windows)的设置方法如下:
设置 > 输出 > 输出模式:高级 > 关键帧间隔:3 > 确定


使用OBS推流时出现噪音,怎么解决?

下面以OBS 17.0.0 (64bit, windows)为例进行说明:
在OBS主界面,点击“麦克风/Aux”下面的齿轮图标 > 滤镜;
在弹出窗口中,点击左下角的加号图标(+) > 噪声抑制 > 确定;
随后将“抑制程度(dB)”滑杆移动到最左边(-60),关闭窗口。


直播点播服务端问题


如何查看直播和点播数据统计?

登录网易云信 > 管理中心,在数据统计页可以查看带宽统计、流量统计等统计信息。
点播统计数据也可以通过点播服务端API接口进行查询(直播暂未提供API查询接口)。


我选择了按带宽计费,为什么其它时间计费都是0,而月末最后一天计费特别高?

因为按每月带宽峰值计费,只有当一个月结束时,才能统计当月带宽峰值。
所以只有月末最后一天计费,并且是按当月带宽峰值计费。其它时间计费都是0。


网易云信 > 管理中心 > 数据统计 > 直播/点播 > 带宽/流量图表的粒度是怎样的?

(1)流量按天统计。
(2)带宽分以下几种情况:


视频转码后的视频清晰度和尺寸如何?

网易视频云点播转码模板目前提供3种视频转码格式和3种清晰度,共计9种不同的清晰度视频格式,其中各个清晰度的码率和分辨率分别如下:

如上传的视频分辨率和以上分辨率不一致,则在转码时,将按照以上标准尺寸按比例缩放输出文件。
若上传的视频分辨率本身较小,但选择了高清的转码格式,则系统仍然会按照设置的高清格式进行转码。但因为视频本身清晰度较低,用户体验可能较差。


直播频道有哪几种状态?

共有4种状态:


关于服务端API校验用的CurTime

表示当前UTC时间戳,从1970年1月1日0点0分0秒开始到现在的秒数。
需要传递整数。


创建直播频道有限制吗?

创建直播频道,没有数量限制。
频道名称最多支持64个字符。


创建直播频道,名称支持哪些字符?

支持:中文、字母、数字、下划线(其它字符不支持)。


开启录制,视频名称支持哪些支持?

支持:中文、字母、数字(其它字符不支持)。


服务器提供的直播推流地址会自动刷新?

是的,自动刷新功能用于服务器校验,起到防盗链的作用。
如果启用了防盗链,地址刷新以后,旧地址就会失效,只有新地址可用。
如果没有启用防盗链,则新旧地址都是可用的。

什么是防盗链?

就是服务器提供的推流地址会自动刷新,刷新后旧地址就会失效,只有新地址可用。
这样别人即使获取了你以前使用过的推流地址,也是无法推流的,防止别人盗用。

我不需要启用防盗链怎么办?

默认不启用。

如何启用防盗链?

需要启用防盗链的客户,请主动向网易视频云商务提出申请,后台审核确认后为您开通。

直播推流地址有效期多久?

永久(没有启用防盗链的情况下)。

直播推流地址什么情况下会失效?

启用了防盗链并且超时的情况下。
如果正在正常直播的话,不会因为地址失效而受影响,直播结束后地址才失效。

防盗链超时时间是多久?

默认两小时超时刷新。
如果您在两小时内通过网页打开了频道地址页面,或者通过API接口重新获取地址,则会立即刷新。


直播能录制吗?(直播视频能保存吗?)

我们提供直播录制服务。
您可以自行在直播频道中通过管理控制台或服务端API接口启用对该频道的录制(系统默认不启用)。
启用以后,直播过程中,会自动进行录制。直播结束后,自动生成录制文件。
录制文件保存在网易服务器上。
您可以随后对录制文件进行下载、点播、删除操作。


直播录制后,录制文件和直播频道怎么关联?

通过cid(直播频道ID)关联。


如果删除了直播频道,还能通过cid查询其关联的录制文件吗?

频道一旦删除,该频道对应的cid即被删除,无法再通过cid查询其关联的录制文件。


如果删除了直播频道,关联的录制文件会被删除吗?

不会。频道删除后,录制文件仍然存放在“云点播 > 视频管理 > 直播录制”分类下。
但是无法再通过直播频道的cid进行查询。


直播推流录制过程中,可以停止录制吗?

可以,停止以后生成的录制文件只有停止前的部分。


直播录制的切片长度是什么意思?

直播管理 > 频道管理 > 录制 > 切片长度:
切片是指直播录制过程中,生成单个录制文件的最大时间长度。
每次超过这个切片时间长度,就生成一个新的录制文件。
切片长度范围:5 — 120分钟。


直播录制后,怎么查询录制文件?

直播结束后,要过一会儿才能生成录制文件。所以建议在直播结束10分钟后再查询录制文件。
也可以设置直播录制回调,当录制文件生成后,主动通知您的服务器。


为什么查询不到直播的录制文件?

关于直播录制的注意事项如下:

直播环境 能否监测直播状态 能否录制
录制依赖直播状态
能监测直播状态才能录制
备注
Windows Demo/SDK
Android Demo/SDK
iOS Demo/SDK
Web Demo/SDK
第三方推流软件/应用 ! ! 需要向商务申请开通
才能检测状态/进行录制


关于直播API接口“禁用频道”和“恢复频道”的特别说明

禁用和恢复频道用于内容监控,即当发现主播正在播出违规等不适当的内容时,将该频道禁用。
禁用和恢复接口时,服务器需要将指令下发到全部节点,所以会有一定延迟。
注意不要将此接口作为日常的停止频道用途。
主播结束直播后,频道会自动变为空闲。
频道可以删除,也可以启用防盗链防止恶意使用。


云点播支持哪些视频格式上传?

支持RMVB、WMV、ASF、AVI、3GP、MPG、MKV、MP4、DVD、OGM、MOV、MPG、MPEG、MPE、FLV、F4V、SWF、M4V、QT、DAT、VOB、RMVB、RM、OGM、M2TS、MTS、TS、TP、WEBM等格式上传。
但是只支持MP4、FLV和HLS进行点播/播放。
其它格式上传时,需要通过自定义模板转码为支持的点播/播放格式。


点播文件上传的方式有哪些,是否支持断点续传?

可以通过浏览器操作和服务端API接口上传,支持断点续传。


通过服务端API上传文件,需要调用哪些接口?

请参考点播服务端API文档,章节 “6 文件上传”部分。
6.1 文件上传初始化
6.2 获取上传加速节点地址
6.3 文件数据上传
6.4 断点续传查询断点
6.5 上传完成根据对象名查询视频或水印图片ID

另外,我们还提供有上传SDK可以参考和使用:http://netease.im/im-sdk-demo(直播点播 > 点播上传)。


文件上传成功后能否立即点播或下载?


为什么点播视频文件转码后清晰度降低了?

视频转码后,如果选择了清晰度较低的格式播放,那么清晰度相比源视频会降低。


怎么对视频增加水印?

请参考点播服务端API文档,依次调用下列服务端API接口:


Java如何解析网易服务器回调的json字符串?

JSONObject json = JSON.parseObject(body); //将json字符串类型转化为JSONObject对象
name= json.getString("name"); //获取JSONObject对象的值
vid = json.getInteger("vid");


创建频道API,返回604,有哪些常见原因?


使用直播服务端API创建频道后,名称显示问号等乱码。


直播点播SDK问题


软硬编解码对比

优点 缺点 备注
软编解码 1、兼容性强,对系统版本要求比较低,出错少
2、编解码可操作空间比较大,自由度高。
CPU消耗比较大。
硬编解码 功耗低,执行效率高 GPU处理。
因不同型号的芯片对编解码的实现会有不同,并不能保证编解码的效果与其它机型一致或者不会出错,可控性比较差。
- iOS:需要8.0以上版本
- Android:
编码端需要4.3以上版本;
解码端需要4.1以上版本。


显示问题怎么处理(比如:横屏、竖屏、旋转、拉伸、变形、黑边等)?

关于显示的问题,SDK只负责把视频数据发送到应用层,应用层用于显示。
至于应用层如何显示,因为不同的用户可能有不同的需求,所以SDK在这方面不做限制,由用户自行处理。
当然我们Demo中也给出了相关的示例,用户可以参考。


Android播放器怎么实现横竖屏切换无延迟不卡顿?

1、首先要在AndroidManifest.xml中相应的activity内加上:
android:configChanges="orientation|keyboardHidden"
2、然后在activity的代码部分逻辑处理中重载onConfigurationChanged事件,参考代码:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

3、监听到屏幕切换后更新UI。


如何设置SDK日志等级和路径?

①Windows推流:

NLSS_RET  Nlss_Create(const char *paLogpath, NLSS_OUT _HNLSSERVICE *hNLSService);

②Android推流:
Android 直播推流 SDK 开发指南 (6.13 日志管理,10 Demo日志收集)
开发者可以根据需要设置日志级别和是否上传日志到服务器:

lsMediaCapturePara.logLevel = lsLogUtil.LogLevel.INFO;
lsMediaCapturePara.uploadLog = true; //是否上传SDK日志

③iOS推流:

[_mediaCapture setTraceLevel:LS_LOG_INFO];  
[_mediaCapture isLogToFile:YES];  
streamparaCtx.uploadLog = YES; //是否上传SDK日志

④Android播放:

mMediaPlayer.setLogPath(mLogLevel, mLogPath)

⑤iOS播放:

[NELivePlayerController setLogLevel:NELP_LOG_DEBUG];
[self.liveplayer isLogToFile:YES];


各SDK资源释放完成后,会有哪些通知?


观看直播过程中可以暂停播放吗?

不能。直播过程中,播放不能暂停,只能停止。
若要停止播放:


锁屏对推流的影响?


支持纯音频直播吗?

Windows、Android、iOS、Web推流端都支持纯音频直播模式。
设置方法如下:


支持混音/伴音吗?

Android和iOS推流端支持直播中播放背景音乐。


支持推流本地录制吗?

Android和iOS推流端支持直播中进行本地录制。


Android和iOS播放器SDK和Demo支持哪些点播格式?

文件格式:MP3、MP4、FLV
视频编码:H264
音频编码:AAC、SPEEX


Demo和SDK可以推流到第三方服务器吗?可以播放第三方媒体流吗?

直播推流Demo和SDK都不支持推流到第三方服务器。
播放拉流Demo和SDK都支持播放第三方的音视频媒体流。


Windows推流Demo,常见问题有哪些?

1、摄像头被别的程序占用,摄像头打开失败,会提示“打开视频采集出错”;
2、URL填写错误,会提示“打开直播出错,具体错误信息请看返回值”;
3、弱网或者网络差,直播画面中会看到帧率和码率明显降低;
4、断网(网络中断),会提示“直播过程中发生错误,直播已经结束,请重新开启直播”。


Windows推流Demo中,选择“任意区域桌面”后,为什么不能任意选择?

Demo仅仅用于功能展示,您可以通过SDK接口实现任意选择。


Android推流SDK基本逻辑

  1. 创建直播实例:mLSMediaCapture = new lsMediaCapture(this, mContext, mVideoPreviewWidth, mVideoPreviewHeight, mUseFilter);
  2. 打开本地预览:startVideoPreview
  3. 初始化直播:initLiveStream
  4. 开始直播:startLiveStreaming
  5. 停止直播:stopLiveStreaming
  6. 停止本地预览:stopVideoPreview
  7. 销毁本地预览:destroyVideoPreview
  8. 销毁直播实例:uninitLsMediaCapture


Android推流,常见问题有哪些?

1、初始化出错
SDK初始化出错时,会报如下3个消息中的一个或者多个,这时候需要及时排查问题原因(例如:SDK调用出错、设备适配出错等)。

int MSG_INIT_LIVESTREAMING_OUTFILE_ERROR = 0;
int MSG_INIT_LIVESTREAMING_VIDEO_ERROR = 1;
int MSG_INIT_LIVESTREAMING_AUDIO_ERROR = 2;

2、开始直播出错
本地预览完毕,需要等待MSG_START_PREVIEW_FINISHED消息上报后再调用startLiveStreaming开始直播。
3、推流过程出错
需要首先调用stopLivestreaming,然后停止直播是异步完成的,需要等待停止直播完成的消息MSG_STOP_LIVESTREAMING_FINISHED上报后,再调用initLiveStream和startLiveStreaming重新推流。
4、切后台
如果程序切后台,那么会调用onPause,程序切回前台后调用onResume。
按照Demo中这两个方法的调用,音视频推流的时候,如果程序切后台,音频保持采集和推流,视频推流切后台之前的最后一帧;纯音频推流的时候,如果程序切后台,音频推流静音帧。两种情况下,如果程序切回前台,恢复正常推流。
5、网络相关问题
(1)MSG_RTMP_URL_ERROR:上报此消息,说明Socket中断,推流停止。需要调用停止直播接口,然后自行检测网络是否重连,网络重连之后,再调用重启直播代码。一定要等到停止直播完成的消息MSG_STOP_LIVESTREAMING_FINISHED上报之后才能够重启直播。
停止直播:

m_tryToStopLivestreaming = true;  
mLSMediaCapture.stopLiveStreaming();

重启直播:

boolean ret = mLSMediaCapture.initLiveStream(mliveStreamingURL,mLSLiveStreamingParaCtx);  
mLSMediaCapture.startLiveStreaming();

(2)MSG_QOS_TO_STOP_LIVESTREAMING:上报此消息,说明网络变差,QoS机制启动,设置码率降低到阈值(原始设置码率的50%),建议用户在此时根据该消息进行网络不好的提示。
(3)MSG_BAD_NETWORK_DETECT:极差网络情况下的消息上报,如果连续10秒音视频数据都没有发出去就会上报这个消息,此时用户需要调用停止直播代码,等到结束消息后再重启直播。


Android推流,为什么滤镜没有效果?

请检查以下内容:


Android播放,常见问题有哪些?

1、切后台

2、弱网
在弱网条件下,如果不足以正常拉流的话,播放器为表现为频繁缓冲,若长时间拉不到流,播放器会超时退出。
超时时间默认为30秒,可以自定义超时时间(可设置范围0-30秒,不包括0)。
需要监听OnErrorListener。

3、断网
在断网条件下进入播放,播放器会立即返回播放失败;
若在播放过程中断网,播放器会进入缓冲状态,若在30秒内网络恢复,则播放能正常恢复,若30秒内没有正常恢复,则播放失败。
需要监听OnErrorListener。


怎么解决在播放Activity界面上调用其他Activity导致播放暂停的问题?

这类问题的原因是其他Activity被唤起时,播放Activity被退到了后台导致播放控件暂停。因此要解决这类问题,必须避免另起Activity的方式,具体的解决方法有以下两种:
1、可以在播放Activity界面中设置一个FrameLayout或者RelativeLayout,将播放控件View和其他业务View(可以设置visibility="gone")包裹起来。
在播放中需要使用到其他View时,将View的visibility设置成可见,这样就可以实现在当前Activity进行其他操作的方式。
2、采用PopupWindow方式的弹框进行业务操作。PopupWindow区别于DialogWindow的地方在于,PopupWindow不会使Activity进入onPause,因此也能解决上述问题。


报错:java.lang.UnsatisfiedLinkError: Can not load ... library.

library.java.lang.UnsatisfiedLinkError: Can not load ... library.  
  Supported ABI[ armeabi-v7a ] Available library[ ]  
    Please use liblivestreaming_{@link #Build.SUPPORTED_ABIS}.so


iOS推流,常见问题有哪些?

1、SDK初始化失败
设置日志级别为LS_LOG_INFO,调试查看具体的错误信息,例如:

2、iOS推流,切换到后台时无需调用任何接口。
切换到后台,则推流没有数据发送出去;
在1分钟之内切回是没关系的,会自动继续推流;
超过1分钟,SDK会推送直播过程出错的回调,也就是onLiveStreamError,这时候重启推流。
所以,不用在切后台时候调用任何接口做任何操作。

3、弱网(网络很差)、断网(网络断开)
对于SDK来说,无论切后台、弱网、断网,只要数据发送不出去,导致Socket被断开,就会抛出onLiveStreamError错误回调。


iOS推流,怎么查看设置的推流参数是否生效?

在initLiveStream处设置断点,展开paraCtx、sLSVideoParaCtx、sLSAudioParaCtx。


iOS推流过程中自动锁屏,怎么解决?

在didFinishLaunchingWithOptions加入下列代码: [[UIApplication sharedApplication] setIdleTimerDisabled:YES];


iOS推流,相同的通知,为什么收到两次?

如果用户监听的时候没有设置具体的对象,可能会收到两次;如果设置具体mediacapture的对象,那么就只收到一次通知。


iOS播放,常见问题有哪些?

1、切后台

2、弱网

在弱网条件下,如果不足以正常拉流的话,播放器为表现为频繁缓冲,若长时间拉不到流,播放器会超时退出。
超时时间默认为30秒,可以自定义超时时间(可设置范围0-30秒,不包括0)。
需要监听NELivePlayerPlaybackFinishedNotification通知
reason: NELPMovieFinishReasonPlaybackError。

3、断网

在断网条件下进入播放,播放器会立即返回播放失败;若在播放过程中断网,播放器会进入缓冲状态,若在30秒内网络恢复,则播放能正常恢复,若30秒内没有正常恢复,则播放失败。
需要监听NELivePlayerPlaybackFinishedNotification
reason: NELPMovieFinishReasonPlaybackError。


iOS播放器提示初始化失败,怎么办?

首先,请用真机测试,不支持模拟器。
然后,退出播放后,才能重新初始化。

关于退出播放的说明如下:
退出播放需要调用 shutdown() 接口,退出成功会收到 NELivePlayerReleaseSueecssNotification 通知。
[self.player shutdown];
如果没有退出播放界面,在重新播放之前(如播放过程中切换URL)需要将创建的 view 释放掉。
[self.player.view removeFromSuperview];
并将播放器置空:self.player = nil;


iOS播放器,怎么获取分辨率?

NELPVideoInfo *vinfo = (NELPVideoInfo *)malloc(sizeof(NELPVideoInfo));
[self.liveplayer getVideoInfo:vinfo];
NSLog(@"width = %ld, height = %ld", (long)vinfo->width, (long)vinfo->height);


Xcode 8和iOS 10,运行Demo报错?

Xcode 8,需要将Build Settings > Build Options > Enable Testability设置为No。
iOS 10如果出现提示:“This app has crashed because it attempted to access privacy-sensitive data without a usage description.”请在info.plist中加入下列语句(右键选择Open As > Source Code打开):

<key>NSCameraUsageDescription</key>
<string>cameraDesciption</string>
<key>NSMicrophoneUsageDescription</key>
<string>microphoneDesciption</string>


报错:ld: symbol(s) not found for architecture arm64/armv7/i386/x86_64

①检查有没有导入相应的库文件;
②检查Xcode配置,在Build settings > Architectures > Valid Architectures中,有没有配置对应的架构支持;
③在Build settings > Other Linkers Flags 里面,增加 -all_load 选项,查看是哪些库文件冲突。


报错:stop reason = signal SIGPIPE

参考Demo中main.m文件,添加:signal(SIGPIPE, SIG_IGN);

int main(int argc, char * argv[]) {
    @autoreleasepool {
        signal(SIGPIPE, SIH_IGN);
        return UIApplicationMain(argc, argv, nil, NSStringFromClaa([AppDelegate class]));
    }
}

由于网络中断等原因,Socket断开,继续发送数据的话系统会抛出SIGPIPE信号,默认处理方法是显示提示信息,终止并退出程序。为了避免这种情况,可以设置SIG_IGN忽略信号处理函数:signal(SIGPIPE, SIG_IGN);
这样产生SISPIPE信号时就不会终止程序,而是直接把这个信号忽略掉。


Web推拉流,出现异常如何处理?

1、Web推拉流,SDK初始化一般不存在失败问题,需要注意的是用户如果要在播放器初始化后紧跟操作的话,需要在初始化回调函数中进行,否则会由于还没有初始化完成就调用而报错(其中Web推流SDK提供了初始化错误回调)。
2、Web推拉流SDK目前暂时未做弱网优化。
3、Web推拉流SDK在断网时会抛出错误,Web推流在startPublish函数中提供了错误回调函数。Web拉流需监听错误回调onError。


Web播放器,为什么会被自动全屏(怎样设置才能实现窗口化播放)?

首先,需要在video标签中添加:x-webkit-airplay="allow" webkit-playsinline这两个属性;
其次,即使添加了,某些浏览器仍然可能无视并调用或劫持到自带的播放器全屏播放。


Web端播放,怎么切换播放文件?

文件播放完以后,可以等待一会儿(setTimeout),再调用setDataSource和play()即可播放下一个文件,不需要释放资源重新初始化。 参考代码如下:

setTimeout(function() {
    myPlayer.setDatasource(……)
    myPlayer.play()
}, 500)

Web播放器API文档:3.12 setDataSource(source),3.7 play()


Web播放器,如果播放失败了,还要重新播放原来的地址,怎么操作最简单?

myPlayer.refresh()


Web播放器常见自定义