iOS SDK 历史更新日志

下载pdf
更新时间:2020-03-10 11:10

2020-03-09(g54f488a0c)

新增功能

1. 转推支持 RTMPS 协议

该功能可将直播流转推到 Facebook ,助力客户生态引流。当前仅部署到海外集群。

2. 流媒体数据端到端加解密

通过推拉流之前设置的对称密钥,进一步强化媒体数据的安全性,密钥设置由外部模块完成,比如客户 App。仅支持 Native SDK 推拉流,不支持转发 CDN、WebRTC、混流客户端和录制客户端。

3. 外部采集支持本地预览

客户使用外部采集功能时无需再自行渲染,方便客户使用。当前仅支持基础功能的渲染,像添加镜像等高级功能暂不支持。

  • 新增 setConfig 配置项,通过设置 setConfig:vcap_external_support_preview=true 开启此功能。

4. 媒体播放器音量新增功能

  • 新增 setPlayVolume:接口,设置本地播放音量;
  • 新增 setPublishVolume:接口,设置推流音量;
  • 新增 enableAccurateSeek: 接口,是否开启精确 seek 功能,新增 setAccurateSeekTimeout: 接口进行设置。
    媒体播放器 Seek 时默认 Seek 到指定位置的上个关键帧,会导致重复播放,该功能支持客户 Seek 到指定位置的下一个关键帧开始播放,避免重复播放。需要注意的是为了避免花屏,该功能会从 Seek 位置的上一个关键帧解码到 Seek 位置,所以会增加一定的耗时。

5. iOS ReplayKit 增加接口 handleVideoInputSampleBuffer:timeStamp:,支持由外部传入sample buffer的时间戳

6. 新增设置摄像头对焦和变焦的功能

电商直播场景中有一些卖翡翠、吊坠之类体积较小的商品,通过对焦和变焦的功能,客户可以清晰地展示商品的细节。

7. 外部滤镜新增 CMSampleBufferRef 类型数据的支持

2020年3月9号之前,ZEGO SDK外部滤镜返回的数据类型是 CVpixelBufferRef。而 CVpixelBufferRef 是 CMSampleBufferRef 的一部分,客户可根据 CMSampleBufferRef 类型中的 exif 信息,去实现更多的功能,比如 exif 里的亮度信息去实现用户环境的亮度监测。

改进优化

1. 优化重复调用推流接口,然后不调用停止,继续推不同的 streamID (同一个推流通道)时,房间还会存在上一条流信息的问题。

避免用户监听推流回调时还有不存在的 streamID,进而拉空流的问题。

2. SDK 推拉流质量回调新增当前 App 和系统所使用的 CPU 及内存信息。

完善推拉流回调的内容,客户通过该回调可以获取更多的信息。

3. iOS 的外部采集渲染模块新增 ZegoAPIAudioFrame 类的获取数据和属性接口。

优化音频渲染的用法,客户更方便使用该功能。

问题修复

1. 修复 loginMulti 与 InintSDK 并行时有几率收不到回调的 bug。

2. 修复 重复调用 InintSDK UniniSDK 导致带多房间版本 SDK 的 crash 问题。

3. 修复未调用登录接口时,停止辅路视频预览会导致主路预览也被停止的问题。

API 整理

g54f488a0c 版本中对 API 进行了如下变动。

新增:

2020-02-09(ge443c0e04)

新增功能

  1. 新增 setAudioPostpCallback:config:enableAudioPostp:streamID: 接口,支持音频后处理功能。
  2. 新增 getAVCaptureDevice: 接口,获取当前推流使用的采集设备。
  3. 新增 setNoiseSuppressMode: 接口,支持设置降噪等级。
  4. 支持设置推流音频采样率
    通过 setConfig 配置,参数 audio_encoder_samplerate=samplerate,支持的 samplerate 值为 16000/32000/44100/48000。
  5. 音效播放器 ZegoAudioPlayer 新增以下功能
    1)新增 getCurrentDuration: 接口,获取音效的当前进度。
    2)新增 getDuration: 接口,获取音效的总时长。
    3)新增 seekTo:timestamp: 接口,设置音效的播放进度。
  6. 支持拉多路流时的权重设置。
    新增 setPlayStreamFocus: 接口,在网络环境不佳的情况下,尽量保证关注流的播放质量。
  7. 支持音频自动混流 ZegoAutoMixStream
    开启功能后自动输出为一路包含房间内所有的音频流,不用关心房间内流新增删除时的流操作。
  8. 支持双声道采集
    新增 enableAudioCaptureStereo: 用于设置单双声道切换。

改进优化

  1. 推/拉流质量回调添加音频、视频和总字节数的统计信息。
  2. 优化设置相机曝光点的日志打印频率,引擎调整为2s/次,SDK 不打印。
  3. SDK 删除媒体播放器 getDuration , getCurrentDuration 的日志打印。
  4. SDK 删除曝光设置 setCamExposurePoint:channelIndex: 的日志打印。
  5. 优化自动曝光。

问题修复

  1. 修复在没有重复发音频格式的情况下导致重推流音频缺少 config 的问题。
  2. 修复 App 状态为 UIApplicationStateInactive 时,强行渲染导致的 crash。
  3. 修复某些蓝牙耳机无法工作的问题。
  4. 修复解析 http-flv 第一个 Tag 时,放错 jitter 的缓存队列导致的 crash。
  5. 修复使用不同的 streamID 重复调用推流时房间还会存在上一条流信息的 bug。

API 整理

ge443c0e04 版本中对 API 进行了如下变动。

新增:

改动:

2019-12-09(gcbdd122c2)

新增功能

  1. 支持 1V1 音视频通话场景的下行流控。
    enableTrafficControl:properties: 接口以前只支持推流时的上行流控,12月9号之后的版本将支持客户端推单流拉单流时的下行流控。
  2. 外部视频采集增加设置旋转角度接口。
    外部视频采集码流方式 ZegoVideoCodecConfig 增加 rotation 参数,以设置旋转角度,通过 onEncodedFrame:data config:bKeyframe:withPresentationTimeStamp: 传递给 ZEGO SDK,拉流时,视频画面是旋转角度的朝向。
  3. activateAudioPlayStream 和 activateVideoPlayStream 接口支持 rtmp 和 http-flv 协议。
    activateAudioPlayStream:active:activateVideoPlayStream:active: 以前仅限于从 ZEGO 服务器拉流时可以选择只拉音频/视频流,12月9号之后的版本此功能将适用于从 CDN 拉流。
  4. 音频设备模式添加 communication3 模式,支持下麦后释放麦克风设备。
    setAudioDeviceMode: 设置音频模式增加 ZEGOAPI_AUDIO_DEVICE_MODE_COMMUNICATION3 参数,使用此参数可保证不推流的情况 ZEGO SDK 不会占用麦克风设备。

改进优化

  1. 优化摄像头曝光逻辑,支持使用当前曝光值或者自动调节曝光。
  2. 修正了一些场景的错误码。

问题修复

  1. 修复媒体播放器打开硬解不出帧的 bug。
  2. 修复 AudioPlayer 反初始化时崩溃的问题。
  3. 修复 kickOut 接口兼容性问题。
  4. 修复判断流是否存在的逻辑错误问题。
  5. 修复变量重复定义可能导致未知行为的问题。
  6. 修复无法停止播放 wav 文件的问题。
  7. 修复 uninitSDK 可能 crash 的问题。
  8. 修复外部调用推送重复流名,有几率导致发送2次相同流名的流新增问题。
2019-11-09(gc3c7f5327)

新增功能

1.新增音频播放器模块
为开发者提供全新的音频播放器 ZegoAudioPlayer,专门针对于音频播放需求,单实例创建,特别适用于音效,背景音乐等多个音频文件同时播放的场景。

  1. 媒体播放器模块新增功能
    1)新增 - clearView 接口,快速实现播放器的清屏能力。
    2)新增 - setBackgroundColor: 接口,支持设置播放器的背景颜色,定制化实现色彩缤纷的播放器,适用于少儿在线教育。
    3)新增 - setViewMode: 接口,设置播放控件的显示模式,支持开发者设置需要的播放器显示模式。
    4)新增 - setAudioPlayDelegate: 回调接口,获取音频数据回调。
  2. 控件背景颜色设置功能
    1)新增设置预览控件背景色的接口 - setPreviewViewBackgroundColor:,支持开发者设置推流端预览控件的背景颜色。
    2)新增设置播放控件背景色的接口 - setViewBackgroundColor:ofStream:,支持开发者设置拉流播放控件的背景颜色。
  3. 断线重连机制增加设置最大重试时间接口,setConfig("room_retry_time=xxx")和setConfig("av_retry_time=xxx"),开发者可以根据场景需要设置最大重试时间。
  4. 新增设置推流通道扩展参数接口 - setChannelExtraParam:channelIndex:,支持开发者将推流通道设置为 animation
  5. 新增音频推流静音接口 - muteAudioPublish: 和视频推流静音接口 - muteVideoPublish:,支持设置推出去的视频流或者音频流为静音。

改进优化

  1. 优化了断线重连机制的逻辑,为业务提供更优质的重连服务。
  2. 优化了日志目录,清晰的区分本地缓存目录和日志目录。
  3. 优化 - onRemoteMicStatusUpdate:ofStream:reason:- onRemoteCameraStatusUpdate:ofStream:reason: 回调,新增 reason 参数。
  4. 优化 ZegoDeviceErrorCode,新增若干个错误码。
  5. 优化 - onKickOut:roomID:customReason: 回调接口,新增了字段 customReason
  6. 优化 + setConfig: 接口,允许通过 setconfig 接口设置 max_channels

问题修复

  1. 修复快速初始化反初始化导致 SDK 崩溃的问题。
  2. 修复连麦加速时没有拉流质量回调问题,限制最大重试时间最大值。
  3. 修改监听耳机插拔的时机。
  4. 修复断网事件监听。
  5. 修复 wifi 切换 4G 网络时,流通知可能异常的问题。

API 整理

gc3c7f5327 版本中对 API 进行了如下变动。

新增:

改动:

2019-09-09(g3161cd976)

新增功能

1.多房间功能 新增 ZegoMultiRoom 功能,支持用户进入多个房间进行拉流,帮助开发者实现更多特殊的互动视频场景,如教育超级小班,多房间监控等需要用户灵活加入多房间的场景。注意:SDK 默认不包含此功能,需要下载包含此功能的 SDK。

改进优化

1.日志即将写满回调
ZegoLogInfoDelegate 增加日志即将写满回调 onLogWillOverwrite

2.音效均衡器
ZegoLiveRoomApi 增加音效匀衡器设置接口 setAudioEqualizerGain,提供了频带设置和频带的增益值设置,帮助开发者实现更加优质的音质效果。

3.分层编码新增类型
ZegoVideoCodecAvc 枚举新增 VIDEO_CODEC_VP8 类型。

4.媒体播放器新增设置硬件解码
ZegoMediaPlayer 增加设置硬件编码 requireHWDecoder 接口。

5.媒体播放器新增回调数据格式
 新增 ZegoMediaPlayerVideoPlayWithIndexDelegate 视频播放回调,支持给出 YUV(I420,NV12,NV21) 格式视频帧数据。

6.外部滤镜增加 NV12 类型

7.断线重连机制优化
 为修复已知的断线重连机制出现的问题,对断线重连机制进行全面的优化。

2019-08-09(gc68861be)

问题修复

  1. 对某些特定场景下推流失败的问题进行了优化。
2019-07-09(ge9606fe0)

新增功能

  1. 多播放器实例

    ZegoMediaPlayer 模块支持最多四个播放器实例,支持播放音乐文件,提供播放进度的通知等;便于预加载,有效降低切换内容的首帧时间。

改进优化

  1. 拉流代理 ZegoLivePlayerDelegate 中增加了5个回调:
  • onRenderRemoteVideoFirstFrame: 在拉流成功后,通知所拉视频流的首帧视频已完成渲染,方便了解视频流首帧的渲染情况和渲染的时长。
  • onRemoteCameraStatusUpdate:ofStream: 通知所拉流即推流端的摄像头开/关状态,适用于了解远端是否主动开关摄像头,能够区分远端无视频画面是关闭了摄像头导致还是网络异常等情况导致。
  • onRemoteMicStatusUpdate:ofStream: 通知所拉流即推流端的麦克风开/关状态,适用于了解远端是否主动开关麦克风,能够区分远端无音频声音是关闭了麦克风导致还是网络异常等情况导致。
  • onRecvRemoteAudioFirstFrame: 通知接收到所拉流的首帧音频,方便获取获取首帧音频的时长,了解音频流首次打开的延迟情况。
  • onRecvRemoteVideoFirstFrame: 通知接收到所拉流的首帧视频,方便获取获取首帧视频的时长,了解视频流首次打开的延迟情况。
  1. 推流代理 ZegoLivePublisherDelegate 中增加了 onCaptureAudioFirstFrame 回调,通知收到采集音频的首帧,方便了解音频首帧的采集情况和采集时长。

  2. 混流代理 ZegoMixStreamExDelegate 中增加了 onMixStreamRelayCDNStateUpdate:mixStreamID: 回调,通知混流转推 CDN 的状态。

  3. 拉流质量回调 onPlayQualityUpate:quality: 中的 ZegoApiPlayQuality 增加了推流端到拉流端的延迟 rtt 和推流端到拉流端的丢包率 pktLostRate。方便客户端直接获取端到端的延迟和丢包情况,便于在网络不佳的时候提示用户当前网络的直播情况,从而引导用户切换网络或者重新进入直播。

API 整理

ge9606fe0 版本中对 API 进行了如下变动。

新增:

改动:

2019-06-10(g77803827)

改进优化

  1. 全面更新 SDK 错误码,新版错误码更加统一和清晰,让开发人员排查问题更加快速便捷。
  2. setConfig 接口增加 play_nodata_abort 配置项,从即构服务器拉流没拉到数据时可以控制是否终止拉流。
  3. startPlayingStream 接口的 ZegoAPIStreamExtraPlayInfo 参数增加字段 shouldSwitchServer,支持在连麦时根据此字段判断是否需要切换到即构服务器,开发者在采用附加信息中的拉流 URL 进行拉流的情况下,无需在处理连麦时先停止从 CDN 拉流,再重新从即构服务器拉流。
  4. 混流配置 ZegoMixStreamConfig 增加自定义字段 advancedConfig,支持在混流时传递定制化的混流配置信息到后台,比如指定的视频编码格式、SEI 发送方式。
  5. 新增 addPublishTargetdeletePublishTarget 接口,支持修改已设置的转推地址,可以动态增加或删除转推地址。

问题修复

  1. 修复从 RTC 拉流没拉到数据时会结束拉流的问题。
  2. 修复房间服务器重启导致的断线重连问题。

API 整理

g77803827 版本中对 API 进行了如下变动。

新增:

改动:

2019-05-09(gc410cfbe)

新增功能

  1. 音频频域功率谱
    新增音频频域功率谱功能,频域功率谱展示了音频信号在各个频点上的能量,能根据其值绘制出音频的波形图,比音量的展示效果更优,更适用于主播电台,KTV合唱,语聊点播等场景。相关接口请查看 API 整理->新增接口

改进优化

  1. 修改 setMediaSideFlags 接口,媒体次要信息支持 SEI 方式发送。
  2. 新增 setLogSize 接口,支持设置日志文件的大小。
  3. startPublishing 接口的流附加信息参数长度从 512 bytes 扩充到 1024 bytes,支持更多数据的发送。

问题修复

  1. 修复网络断网并正常恢复后房间重连的问题。
  2. 修复房间心跳超时没有回调 onDisconnect 的问题。
  3. 修复房间登录后没有收到登录回调时就立即登出房间造成房间状态错误的问题。

API 整理

gc410cfbe 版本中对 API 进行了如下变动。

新增:

改动:

2019-04-09(gf6f00774)

新增功能

  1. 音频节约传输开关
    新增 enableVAD 接口用做语音活动检测的开关,在有音频的条件下检测到语音时才发送语音包,有效减少流量消耗,降低成本。

  2. 多播放器实例
    MediaPlayer 模块支持最多三个播放器实例,支持播放音乐文件等;便于预加载,有效降低切换内容的首帧时间。

  3. 登录房间加速
    登录房间新增由后台配置的加速模式,能够缩短登录房间的时间。

  4. 多种回声消除模式
    新增 setAECMode 接口支持设置舒适,适度和激进三种回声消除模式。

改进优化

  1. 新增音频设备模式 Communication2 模式,在开启系统回声消除时会始终占用麦克风设备。
  2. 新增 setMinVideoBitrateForTrafficControl 接口,在使用流量控制时能设置视频码率的最小值,当发送的码率小于这个值时将进行等待,而不是在视频不流畅的情况下继续直播。
  3. 增加 setReverbParam 接口,支持更多的音频混响参数设置,混响阻尼和余响。
  4. 新增 onCaptureVideoFirstFrame 回调,当采集到视频的首帧时收到该回调。
  5. 优化了弱网条件下的音视频传输质量。
  6. 增加 onAVEngineStart 回调,更新 onAVEngineStop 回调的时机,提供设备占用情况的信息通知,获取 SDK 何时在占用音视频设备。
  7. 修改 enableLoopback 采集监听的有效调用时机,在耳机插入时采集监听才生效,即讲话能听到自己的声音。
  8. 混流配置ZegoMixStreamConfig新增选项 ,支持单流直接推流到CDN,或者混流成单流推流到CDN。
  9. 修改 enableTrafficControl 接口,流量控制属性参数新增音频流量控制选项。
  10. onPublishQualityUpdate 推流质量更新回调,增加了 ZegoApiPublishQuality 类型参数,可获取更多推流质量信息,具体请点击接口查看。
  11. onPlayQualityUpdate 拉流质量更新回调,增加了 ZegoApiPlayQuality 类型参数,可获取更多拉流质量信息,具体请点击接口查看。

问题修复

  1. 修复未登录房间或者登录房间未完成时调用 endJoinLive 等房间信令时崩溃的问题。
  2. 修复 iOS 版的媒体播放器无法回调 onPlayError 的问题。

API 整理

gf6f00774 版本中对 API 进行了如下变动。

新增:

改动:

2019-01-04(gcb20f711)

新增功能

  1. 新增变声功能;
  2. 新增转推CDN状态回调接口;
  3. 新增 MediaPlayer 模块重复播放接口;
  4. 新增 MediaPlayer 模块截图接口;
  5. 新增 iOS 推流过程中摄像头支持动态朝向。

问题修复

  1. 修复若干BUG,提升稳定性。
2018-11-06(gb5998cbf)

问题修复

  1. 修复若干BUG。
2018-10-30(g3021b99d)

新增功能

  1. 支持第三方授权。
  2. 媒体播放器支持播放网络资源,支持同时播放视频并回调视频帧数据,支持选择播放的音轨。
  3. 混流支持多路输出、水印功能、输出编码码率控制模式。
  4. 新增启用预览和推流镜像接口。
  5. 新增外部渲染模块的 Objective-C 接口。
  6. 本地录制支持 MP4 格式。

改进优化

  1. 优化网络连接模式,增加弱网环境下的推流能力。
  2. 优化分层编码接口。

问题修复

  1. 修复若干BUG,增强系统稳定性。
2018-07-13(gace83bc5)

新增功能

  1. 外部渲染支持回调未解码 264 视频数据给用户
  2. 提高硬编、硬解的稳定性
  3. 混流中支持下发各路流的音量信息
  4. 抖动缓冲优化,减少网络好转时延迟降低的时间
  5. 新增音、视频本地录制接口

问题修复

  1. 修复“MediaPlayer 渲染时,解码画面宽、高和渲染宽、高不一致导致的重影问题”
  2. 修复“iOS8 摄像头卡死阻塞 sdk 的 bug”

改进优化

  1. setPreviewView:setPreviewView:channelIndexstartPlayingStream:inViewstartPlayingStream:inView:paramsstartPlayingStream:inView:extraInfo等 API 不再支持 AutoResizing 布局的 UIView,使用 AutoResizing 布局的 UIView 将不能渲染,可以使用 AutoLayout 布局替代。这次修改主要是为了修复 cocos2dx 的兼容问题。
2018-05-28(g7ea5ae9)

新增功能

  1. 新增“audio-aux 模块,支持 onAuxCallback 中发送媒体次要信息”
  2. 新增“sound-level 模块,支持回调出房间内谁在说话”
  3. 新增“分层编码功能”
  4. 新增”音频加密、解密接口“

问题修复

  1. 修复“无法正确检测硬编码流的 poc 导致的拉流卡顿”
  2. 修复“渲染和 cocos2dx 冲突导致的闪烁”
2018-04-24(g76eafb9)

新增功能

  1. setConfig 接口新增设置 “support_general_mode_below_ios9” (iOS9 及以下连麦时支持 general mode(非强制 voip ))

问题修复

  1. 修复“硬编 crash”
  2. 修复“屏幕分享功能,声音时有时无不同步的问题“
  3. 修复“开始拉流后,使用相同的 StreamID 重复拉流,SDK 内部会重新拉流的 Bug”,修改后的逻辑为“保持之前的拉流状态”

改进优化

  1. 开始一次推流后,如果没有向业务层通知过“推流成功“,则不会向业务层回调“推流重试事件”
  2. 开始一次拉流后,如果没有向业务层通知过“拉流成功”,则不会向业务层回调“拉流重试事件”