直播打断事件处理(音视频SDK高级功能四)
本篇是即构科技音视频SDK高级功能第四篇,ZegoLiveRoom SDK 打断事件处理,以iOS环境为例。
1、简介
使用 ZegoLiveRoom SDK 直播过程中,可能会被来电、切后台等事件打断,此时开发者需要处理打断事件。
SDK 提供了与音频打断事件相关的API,如下所示:
ZegoLiveRoomApi.h/**暂停模块@param moduleType 模块类型,参考 ZegoAPIModuleType 定义@attention 用于需要暂停指定模块的场合,例如来电时暂定音频模块@note 暂停指定模块后,注意在合适时机下恢复模块*/
- (void)pauseModule:(int)moduleType;
ZegoLiveRoomApi.h/**恢复模块@param moduleType 模块类型,参考 ZegoAPIModuleType 定义@attention 用于需要恢复指定模块的场合,例如来电结束后恢复音频模块@note 暂停指定模块后,注意在合适时机下恢复模块*/
- (void)resumeModule:(int)moduleType;
本文以来电和切后台为例,讲述如何处理打断事件。
2、来电
2.1 监听音频打断事件
开发者需要在合适的 ViewController 中或其他位置,监听音频打断事件。
示例代码片段如下:
// 监听电话事件
[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(audioSessionWasInterrupted:)name:AVAudioSessionInterruptionNotificationobject:nil];
2.2 处理音频打断
音频打断处理一般有两个步骤:
1.音频打断发生时,暂停音频设备
2.音频打断恢复后,恢复音频设备
示例代码片段如下:
- (void)audioSessionWasInterrupted:(NSNotification *)notification
{NSLog(@"%s: %@", __func__, notification);if (AVAudioSessionInterruptionTypeBegan == [notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue]){// 暂停音频设备[[ZegoDemoHelper api] pauseModule:ZEGOAPI_MODULE_AUDIO];}else if(AVAudioSessionInterruptionTypeEnded == [notification.userInfo[AVAudioSessionInterruptionTypeKey] intValue]){// 恢复音频设备[[ZegoDemoHelper api] resumeModule:ZEGOAPI_MODULE_AUDIO];}
}
Apple 官方示例详见: MusicCube
3、切后台
3.1 支持后台播放
如果开发者希望 App 退至后台依然支持音频播放、录制,需要先在项目中开启后台模式,并指定模式为 Audio,AirPlay,and Picture in Picture,如图所示:
设置后,Xcode 会自动在项目的 Info.plist 中添加对应条目 Required background modes: App plays audio or streams audio/video using AirPlay。
开启此选项,当应用退至后台,只要有音频播放、录制行为,就可以一直运行。运行时,状态栏会变成红色,指示用户当前有麦克风设备在后台运行。
3.2 停止后台播放
开发者开启后台模式,如果在某些场景下需要在后台停止音频播放或录制,依然可以使用 pauseModule resumeModule 实现。
请注意,iOS 系统不支持 App 在后台播放或采集视频画面(注意视频声音属于声音内容,支持后台播放),因此视频画面无需额外暂停或恢复。
对于 App 切换前后台行为的监听,有两种常用方式:
1.在 AppDelegate.m 对应的系统方法中处理。详见 Apple 官方指南:The App Life Cycle
2.注册通知监听状态。示例代码如下:
// 监听 App 切后台
[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(appDidEnterBackground:)name:UIApplicationDidEnterBackgroundNotificationobject:nil];// 监听 App 从后台切前台
[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(appWillEnterForeground:)name:UIApplicationWillEnterForegroundNotificationobject:nil];
在上述方法中,停止后台播放音频的步骤为:
1.App 切后台,调用 pauseModule 暂停音频模块。
2.App 切换回前台,调用 resumeModule 恢复音频模块。
直播打断事件处理(音视频SDK高级功能四)相关推荐
- 混流(音视频SDK高级功能二)
1.简介 混流是把多路音视频流混合成单流的技术.本文讲述zego即构科技实时音视频SDK高级功能之一:混流功能,以iOS环境为例. 主播端和观众端均可主动触发混流.SDK 既支持音视频混流,也支持纯音 ...
- 音频前处理:回声消除、噪声抑制等(音视频SDK高级功能六)
音频前处理技术一般用于去除语音中的干扰.本篇文章介绍即构科技音视频SDK高级功能第六篇,ZegoLiveRoom SDK 为开发者提供了音频前处理的功能,还是以iOS环境为例. 关于如何使用SDK,请 ...
- 音视频SDK包-远程网络视频会议-在线远程教育-屏幕共享-电子白板-影音共享-在线直播等等都可以用
史上最全的音视频SDK包分享给大家 概述一下SDK功能: 项目 详情 视频通信 支持多种分辨率的视频通信 语音通信 提供语音通信,可支持高清宽带语音 动态创建房间 可以根据需要,随时创建房间 H ...
- linux搭建音视频服务器,Linux平台部署音视频SDK实现即时通讯功能
Linux平台部署音视频SDK实现即时通讯功能 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码 ...
- 新增微信小程序和WebRTC连麦直播等多项能力,即构实时音视频SDK再升级!
经过2018年小半年的闭关练功,即构ZEGO团队铸造了不少黑科技.本文将为你带来即构ZEGO实时语音视频SDK近半年新增能力和功能优化的最新进展. 更懂应用场景的语音视频云 作为全球领先的实时语音视频 ...
- 新增微信小程序、WebRTC连麦直播多项能力,即构实时音视频SDK再升级
经过2018年小半年的闭关练功,即构ZEGO团队铸造了不少黑科技.本文将为你带来即构ZEGO实时语音视频SDK近半年新增能力和功能优化的最新进展. 更懂应用场景的语音视频云 作为全球领先的实时语音视频 ...
- “小程序+直播”怎样搅动音视频技术生态?
责编 / 王宇豪 策划 / LiveVideoStack 12月26日晚间,微信小程序开放了直播能力,并首先向社交.教育.医疗.政务民生.金融等五大应用场景开放.与原生App应用和基于浏览器的H5 ...
- 移动音视频SDK工程实践之数据采集和处理
本文由百度智能云音视频SDK产品技术负责人李明路在LiveVideoStack线上分享的演讲内容整理而成,内容从音视频数据角度出发,梳理了音视频SDK的发展和技术演进.详细分析数据在常见音视频模块上遇 ...
- linux视频应用程序开发,Linux平台音视频开发和音视频SDK应用
Linux平台音视频开发和音视频SDK应用 下面介绍一款强大的音视频即时通讯平台给大家,它就是--云智真音视频SDK. 云智真提供一套跨平台的音.视频即时通讯解决方案,基于先进的H.264视频编码标准 ...
最新文章
- 029# Adempiere采购模组-从采购申请创建采购订单
- Invoice校验差异处理
- java线程在什么时候结束,java – 什么时候线程超出范围?
- ps cs6磨皮插件_【PS插件】ps磨皮插件Portraiture
- ConcurrentHashMap的初步使用及场景
- 【转】刨根究底字符编码之十——Unicode字符集的字符编码方式
- JAVA实现onvif的ptz控制_使用Onvif协议进行设备PTZ云台控制
- H5 中 bordercolorlight 属性的用法及作用
- 总结几种常用的安全算法
- python每日一题今天的答案_python每日一题总结1
- read.table与readr::read_delim
- jQuery 常用效果
- JQuery筛选器全系列介绍
- tuned-adm性能优化工具详解
- python机械数据分析_记一次小机器的 Python 大数据分析
- 叩丁狼学院Java入门 项目代码
- CCF试题 201903-2 二十四点
- Android Room 数据库使用记录
- 《罗辑思维不逻辑》之那些温柔的操纵
- Spring boot + Sharding JDBC 分库分表 及 分布式事务处理