播放器 iOS 更新日志
更新时间: 2024/11/19 09:24:15
本文介绍播放器 iOS 端的更新日志。
3.4.4 (2024-09-24)
- 新增调度域名设置,优化首帧加载时长。详情请参考 动态设置 GSLB 域名。
- 新增自定义日志路径配置功能。详情请参考 自定义日志文件路径。
- 改进日志上报机制。
3.2.7 (2023-10-12)
修复偶现的播放器崩溃问题。
3.2.6 (2023-05-06)
- 硬件解码兼容优化。
- 命令注入风险问题合规整改。
- 修复部分已知问题。
3.2.4 (2023-03-02)
问题修复
- 修复播放器在后台运行时,进行开启或关闭播放器,偶现崩溃问题。
- 修复低延时直播场景,偶现的播放器奔溃问题。
3.2.2 (2022-09-09)
- 低延时直播支持 B 帧的解码播放。
- 低延时直播支持 Codec 协商。
- 低延时直播支持 SEI 端到端延迟解析。
3.2.1 (2022-07-19)
- 新增首帧、卡顿率数据统计。
- 区分低延时直播和 CDN 直播播放失败错误码。
- 修复部分已知问题。
- 优化低延时直播延时。
3.2.0 (2022-06-22)
- 低延时直播兼容 H.265 编码和 AAC 音频格式。
- 提升抗弱网性能。
- 修复特殊场景下偶现的直播崩溃问题。
- 支持 H265 软解码。
3.1.6 (2022-05-27)
问题修复
修复播放器在特定环境下偶现崩溃问题。
3.1.5 (2022-05-18)
问题修复
优化在特定情况下低延时直播与 RTC 共同使用时,可能存在的符号警告问题。
升级必看
3.1.5 版本在 libs
目录下新增 NMCBasicModuleFramework.framework
库文件。
从历史版本升级至 3.1.5 及以上版本时,如果您是通过手工导入库文件,请将新增的库文件导入到 App 工程。如果通过 Cocoapods 导入,会自动导入新增的库文件。
3.1.3 (2022-04-12)
问题修复
- 修复 GSLB 在 iOS 15 版本偶现的崩溃问题。
- 修复部分设备上低延时播放失败的问题。
3.1.2 (2022-04-02)
优化
优化缓冲逻辑,减少直播发生缓冲的几率。
3.1.1 (2022-03-18)
优化
优化 NERTC(低延时直播)协议拉流首帧、延时、弱网等关键指标。
3.1.0 (2022-01-18)
优化
NERTC(低延时直播)协议拉流首帧能力提升。
问题修复
修复 iOS 一些 warning 报错。
3.0.0 (2021-12-29)
优化
- NERTC(低延时直播)协议拉流弱网能力提升。
- SDK 权限及个人信息合规整改。
问题修复
修复偶现 BUG。
2.9.1 (2021-08-27)
新增特性
补充 NERTC(低延时直播)协议拉流异常回调。
2.9.0 (2021-05-18)
新增特性
支持 NERTC(低延时直播)协议拉流播放。
2.8.0 (2021-03-18)
新增特性
- 优化统计上报字段。
- 兼容互动直播 2.0 SEI 数据结构。
2.7.1 (2021-02-22)
新增特性
修改窗口尺寸变化的回调逻辑。
问题修复
- 修复播放重试偶现黑屏的问题。
- 修复 Player 引擎偶现 Bug。
2.7.0 (2021-01-20)
新增特性
支持加密直播流播放。
2.6.0 (2020-12-16)
新增特性
- 支持播放基于 HLS 的多码率自适应点播视频。
- 优化 GSLB 直播调度模块。
2.5.0 (2020-11-3)
优化
升级 player 内核。
问题修复
修复偶现 BUG。
2.4.4 (2019-10-11)
新增特性
- 优化日志写入。
- 优化调度逻辑。
2.4.2 (2019-6-27)
新增特性
- 增加 DNS 拉流灾备。
- 增加异常情况网络测速机制。
2.4.1 (2019-4-25)
新增特性
- 增加预调度结果查询接口。
- 增加调度结果切换接口。
- 修复内存泄漏。
2.4.0 (2019-4-08)
新增特性
- 添加多视频(均带有 SEI 时间戳信息)同步播放的功能。
- 部分日志添加实例区分。
- 优化、兼容前面只有音频、视频,而后来又有视频、音频的流。
- 添加回报当前播放 position 的回调。
- 添加自定义 http header 功能。
- 增加 DataSource 外部输入回调接口。
- 增加精确 seek 的超时保护。
2.3.1 (2019-2-26)
问题修复
- 修复 FLV 格式的视频 seek 缓冲时间过长的问题。
- 修复 hls 精确 seek 完成后,实际完成时间与设置时间不符的问题。
优化
提高对部分第三方视频的兼容。
2.3.0 (2019-2-18)
新增特性
- 新增:缓存配置的自定义路径逻辑修改,用户需要对每个视频单独设置路径。
- 新增:增加 gslb 缓存强制刷新接口。
- 新增:点播缓存策略修改为本地文件,视频云直播地址,rtmp 协议地址,hls 地址几种类型的不进行缓存(如果设置了缓存参数)。
- 新增:增加原始地址统计字段上报。
- 新增:直播硬解及 hls 直播支持追赶。
优化
- 优化:所有对外接口均切换到主线程执行(如果不在主线程),保证时序。
- 优化:日志模块部分重构,调整日志上传时机,修改为 App 重启后延时 10s 进行上传。
- 优化:合并解密流程和播放流程,优化首屏时间。
- 优化:定位相关信息获取的位置修改为 app 生命周期内只拿一次(如果有定位权限)
- 优化:修改 GSLB 单次的缓存逻辑,在首条视频拉流失败的情况下移除该条调度结果缓存。
- 优化:规范 switch 操作后保留的参数。缓冲策略、缓冲区大小、解码类型、自动播放、静音、镜像、音量、循环播放、精确 seek、播放速度、拉流超时、同步时间戳获取回调、PCM 回调、YUV 回调、重试配置、音轨序号。
- 优化:seek 完成逻辑,保证每次 seek 均有配对的 NELivePlayerMoviePlayerSeekCompletedNotification 进行回调。
问题修复
- 修复:修复直播追赶时,分辨率变化的场景下偶现的视频花屏问题。
- 修复:seek 到最后,loop 设置失效的问题。
- 修复:实例释放后线程不回收的问题。
- 修复:seek 完成后返回两次 NELivePlayerMoviePlayerSeekCompletedNotification 问题。
- 修复:修改释放通知在某些异常情况不发送的问题。
- 修复:偶现的少量内存泄漏问题。
- 修复:解析同步信息和同步时间戳时偶现的的 crash
- 修复:部分底层统计字段不准确的问题。
- 修复:播放不支持格式的音频文件时出现的 crash
- 修复:部分视频 loop 播放时没有从头开始的问题。
2.2.3 (2019-1-22)
- 放开对第三方点播地址的本地缓冲限制。
- 修复在 seek 完成时的回调多次的问题。
2.2.1 (2018-12-21)
问题修复
- 解决 hls 多音轨视频没有声音的问题。
- 修复部分加密视频无法播放的问题。
2.2.0 (2018-12-10)
新增特性
- 实时信息的获取,包括音/视频接收码率,接收帧率,播放帧率,音/视频缓存时长,音/视频缓存大小,音视频播放时间差。
- 兼容多 slice 编码类型视频硬件解码。
优化
- 删除播放器里未使用到的 dlsym 和 dlopen 等可能影响上架的动态方法。
- 内部统计模块增加线程安全保障,防止 crash。
- 优化播放过程中,seek 到最后的处理逻辑。如果开启了精确 seek,seek 到最后会直接上报 complete 事件,避免等待。
问题修复
- 修复设置循环播放后不走重连机制的问题。
- 修复播放完成后无法重新 play 的问题。
- 修复多音轨类型的文件默认音轨选择错误的问题。
- 限制 seek 的范围在 0 和 duration 之间。
- 修复设置循环播放后频繁上报 error 的问题。
- 修复设置软件解码时,误报硬解开启通知问题。
- 修复播放出错后底层播放状态不对的问题。
2.1.0 (2018-10-29)
新增特性
- 增加重试配置参数。
- 增加缓存配置参数。
- 增加加解密配置参数。
- 增加带(缓存配置和加解密配置)的切换接口,可以切换任何种类视频。
- 增加全局 AudioSession 配置接口。
- 增加私有化配置功能。
- 支持 1080P 硬件解码。
- 原始密钥解密方式接口外部传入的原始密钥方式由 NSString 改为 NSData。
- 增加缓冲区大小设置接口。
- 增加精确 seek 设置的开关接口。
优化
- 性能优化:播放器内部操作队列化管理,防止资源抢占和并发出现的崩溃。
- 性能优化:规范切换接口后的动静态参数保留。
- 性能优化:优化视频本地缓存的功能,切换缓存的实现机制。
- 性能优化:优化释放部分,防止被外部提前释放出现的内存泄漏。
- 性能优化:底层解码出错和流解析出错适配多实例情况。
问题修复
修复统计上报偶现的崩溃问题。
2.0.0 (2018-09-06)
新增特性
- 新增功能:增加多音轨视频音轨无缝切换。
- 新增功能:增加默认音轨选择逻辑。
- 新增功能:hls 加密视频自动探测视频格式。
- 新增功能:增加所有音轨信息查询接口。
- 新增功能:去除多分辨率文件的播放支持。
- 新增功能:通知统一在主线程抛出。
- 新增功能:增加 PCM 数据回调支持配置采样率及声道数。
优化
- 修复个别场景下出现的内存泄漏问题。
- 预调度模块逻辑优化。
1.9.1 (2018-08-02)
问题修复
- 修复硬件解码出现的内存泄漏。
- 修复直播硬编码 960P 推流出现拉流端的持续内存泄漏。
1.9.0 (2018-07-26)
新增特性
- 开放点播循环播放接口。
- 点播 flv,mp4 格式视频本地缓存优化(已经缓存过的 seek 不再需要发起网络请求)。
- 增加水平镜像翻转功能。
- 升级 ffmpeg 3.4。
- 增加滚动示范 Demo(使用多实例方式实现预加载演示)。
问题修复
- 修复引入预调度之后,端到端延时不准确的问题。
- 修复预调度刷新机制失效的问题。
- 修复某些 GOP 较大的视频采用硬件解码切后台再切回前台视频卡住的问题。
优化
调度测速策略优化。
1.8.0 (2018-06-12)
新增特性
- H.265 视频硬件解码支持。
- 兼容先有视频后有音频,或者先有音频后有视频类型媒体播放。
优化
增加网络数据异常防护。
1.7.0 (2018-05-08)
新增特性
- HLS 加密视频播放。
- 增加预调度接口,优化首屏时间。
- 增加点播节点调度。
- 增加同步透传信息接收开关。
问题修复
- 修复 NERTC 推流下出现的音视频不同步的问题。
- 修复统计上报偶现的崩溃问题。
优化
- 集成优化:对外提供 framework 集成方式。
- 集成优化:提供 Cocoapod 集成方式。
1.6.0 (2018-03-29)
新增特性
- 透传时间戳方案兼容硬件解码。
- 透传自定义信息方案。
- 增加 SRT 外挂字幕功能。
- 增加日志回调接口。
- 增加底层日志记录。
优化
多实例场景优化。
1.5.2 (2018-02-05)
问题修复
修复多实例弱网下导致的崩溃。
1.5.1 (2018-01-31)
问题修复
结点调度域名修改。
1.5.0 (2018-01-29)
新增特性
- 新增功能:直播拉流结点选择优化。
- 新增功能:增加加密视频切换播放功能。
- 新增功能:增加视频落后音频类型文件兼容。
问题修复
- 问题修复:获取网络类型卡主线程问题。
- 问题修复:修复释放过程中出现的 crash 问题。
1.4.6 (2018-01-19)
新增特性
- 缓冲策略增加延时追赶模式,NELPDelayPullUp。
- 增加时间戳同步方式。
- 增加 currentSyncTimestamp 同步时间戳查询接口。
- 增加 setSyncTimestampListenerWithIntervalMS:callback 轮询上报同步时间戳接口。
- 增加 currentPlaybackRealTime 真实时间戳查询接口。
- 增加 setRealTimeListenerWithIntervalMS:callback 轮询上报真实时间戳接口。
- 增加 ffmpeg 类型参数配置,优化首屏时间。
问题修复
- 修复多 CDN 内部超时切换时,外部设置的超时时间被重置的问题。
- 修复第二次进入播放器时,拉流超时偶现的不上报结束通知问题。
- 修复多实例初始化时偶现的锁崩溃问题,偶现播放器释放时的崩溃问题。
- 修复外部设置音频抢占模式之后,发生音频抢占并恢复时导致的无声音问题。
- 修复 OBS 拉流端视频卡住的问题。
1.4.3 (2018-01-10)
问题修复
修复多实例共存情况下,频繁释放和初始化各实例导致的崩溃问题。
1.4.2 (2018-01-04)
问题修复
- 修复 https 无法播放问题。
- 修复日志回调偶现崩溃问题。
1.4.1 (2017-12-26)
问题修复
修复多次 seek 导致的崩溃问题。
新增特性
- 增加新的初始化方式,可以传日志回调方法,进行外部日志记录。
- 增加拉流过程中 http 的 header 域字符串形式回调。
1.4.0 (2017-12-18)
问题修复
- 修复弱网情况下,反复进入退出导致的 crash 问题。
- shutdown 接口和 switch 接口做了线程同步,修复多线程调用时,相关打断导致的崩溃。
- 修复 playercore 延后 playervc 释放的问题。
- 去除日志模块的单例模式,改用对象管理,修复多实例情况下的日志混乱和日志模块的崩溃。
- 修复直播多分辨率切换导致的小概率花屏问题。
- 修复上传日志接口出现的崩溃。
- 来电打断使用电话状态和声音打断的双重监测,修复小概率电话打断后直播无法恢复问题。
新增特性
- 基于 initWithContentURL:接口,新增 init 接口和 setUrl 接口。原有接口保留。
- 加解密模块去除等待信号量,使用安全的异步回调机制。
1.3.2 (2017-11-16)
新增特性
增加 IDx 多分辨率自动切换功能。
优化
播放器释放部分优化。
问题修复
- 修复弱网情况下的内存泄漏问题。
- 修复不同文件切换的内存泄漏问题。
- 修复前后台暂停和电话打断逻辑冲突的问题。
- 修复加密视频内存泄漏问题。
1.3.1 (2017-10-17)
新增特性
- 增加 IDx 多分辨率切换功能相关接口。
- 增加初始化错误类型、播放过程中的出错类型。
- 增加播放过程中产生的网络返回码。
- 增加本地日志路径获取接口。
- iOS11 适配,所有与 UI 相关操作移至主线程。
优化
直播和点播切后台逻辑修改。通过 setPauseInBackground:
开关控制前后台拉流逻辑,设置为 NO,SDK 不参与前后台操作。设置为 YES,SDK,对于直播流,SDK 会在进入后台后停止拉流,回到前台后恢复拉流,过程中画面不会出现黑屏现象,对于点播流,进入后台后暂停视频,进入前台后就行播放视频。
问题修复
修复已知 Bug。
1.3.0 (2017-08-28)
新增特性
- 去除 isToFile: 方法。
- setLogLevel 修改为工厂方法。
- 支持模拟器版本。
优化
- 播放器内部逻辑优化。
- 升级 libNMCBasicModule 库。
问题修复
修复已知 BUG。
1.2.9 (2017-08-14)
新增特性
增加初始化接口 initWithContentURL:needConfigAudioSession,可外部配置 AudioSession。needConfigAudioSession 传递为 YES 时,内部会对 AudioSession 进行配置,如果传递 NO,内部不会对 AudioSession 进行操作,外部必须配置 AudioSession。
优化
- 优化直播拉流超时处理。多 CDN 情况下,默认先拉第一条流,如果 3s 内未拉到流数据,则自动切换至第二条流。
- 升级 libNMCBasicModule 库。
1.2.8 (2017-07-10)
新增特性
- 去除直播 SDK 冲突。
- libNMCBasicModule 支持 Bitcode。
- 增加系统库链接 libresolv.tbd。
1.2.7 (2017-07-07)
新增特性
- 增加设置 flv 解密密钥的接口。
- 支持视频解码后的 yuv 数据回调。
- 支持音频解码后的 pcm 数据回调。
- 支持精确 seek。
- 代码优化。
工程变动
- 增加 libNMCBasicmodule.a 库。
- 集成的时候需要添加 libsqlite3.a 库。
1.2.6 (2017-06-13)
- 支持播放过程中切换播放地址。
- 修复一些 bug。
1.2.5 (2017-04-13)
修复一个内存泄漏问题。
1.2.4 (2017-03-30)
- 支持 flv 点播加密视频的解密播放。
- 增加直播缓冲极速模式。
- 修复一些 bug
1.2.3 (2016-12-21)
- 支持多实例创建。
- 支持 https 拉流。
1.2.2 (2016-11-25)
- 增加拉流超时设置接口。
- 增加直播流畅模式设置。
1.2.1 (2016-10-31)
增加音量控制接口。
1.2.0 (2016-09-26)
- 整体结构优化。
- 增加视频码流解析失败时的消息上报。
1.1.0 (2016-09-05)
优化点播缓存。
1.0.9 (2016-08-15)
增加倍数播放的功能(仅适用于点播)。
1.0.8 (2016-07-26)
- 支持服务器参数下发。
- 支持日志保存本地。
1.0.7 (2016-06-30)
优化播放器 buffer 策略。
1.0.6 (2016-05-24)
修复播放限制策略。
1.0.5 (2016-04-29)
- 增加接口保护。
- 优化播放流畅性。
- 支持 speex 播放。
1.0.4 (2016-03-31)
- 增加第一帧画面显示时的消息通知。
- 增加资源异步释放结束后的消息通知。
- 优化播放流畅性。
1.0.3 (2016-01-25)
- 增加设置缓冲策略接口。
- 解决直播延时的问题。
1.0.2 (2015-12-17)
重构代码结构。
1.0.1 (2015-11-29)
播放器的初始版本,提供基本的播放功能。