1 功能简介

在音视频应用中我们经常涉及到耳机麦克风和设备麦克风的切换。不同声道的配置。在遇到这种情况的时候,我们如何配置呢?

  • 耳返即耳机采集监听,在设备上插入耳机(普通耳机或蓝牙耳机)后,能从本机耳机侧听到本设备麦克风采集的声音。
  • 双声道即两个声音通道,听到声音时可以根据左耳和右耳对声音相位差来判断声源的具体位置。ZEGO Express SDK 默认音频采集单声道,当开发者有高音质需求时,可开启双声道采集功能,通过专门的双声道采集设备可以采集到双声道的音频数据并进行推流。

2 示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “/ZegoExpressExample/Examples/AdvancedAudioProcessing/EarReturnAndChannelSettings” 目录下的文件。

3 前提条件

在进行耳返与声道设置之前,请确保:

  • 已在项目中集成 ZEGO Express SDK,实现基本的实时音视频功能,详情请参考 快速开始 - 集成 和 快速开始 - 实现流程。
  • 已在 ZEGO 控制台 创建项目,并申请有效的 AppID,详情请参考 控制台 - 项目管理 中的“项目信息”。

4 使用步骤

4.1 设置耳返

4.1.1 开启耳返

开启预览后或者开始推流后调用 enableHeadphoneMonitor 开启采集监听即耳返,主播方讲话后,会听到自己的声音。

开启耳返后,在连接上耳麦时耳返功能才实际生效。

[[ZegoExpressEngine sharedEngine] enableHeadphoneMonitor:YES];

4.1.2 设置耳返音量

开启预览后或者开始推流后可调用 setHeadphoneMonitorVolume 调整耳返的音量。

其中参数 “volume” 为采集耳返音量大小,取值范围为 0 ~ 200,默认为 “100”。

[[ZegoExpressEngine sharedEngine] setHeadphoneMonitorVolume:100];

4.2 设置声道

setAudioConfigsetAudioCaptureStereoMode 都需要在 startPublishingStreamstartPlayingStreamstartPreviewcreateMediaPlayercreateAudioEffectPlayer 之前调用才有效。

4.2.1 设置音频双声道编码

调用 setAudioConfig 方法设置音频质量相关配置,其中音频编码声道参数 “channel” 需要设置为双声道编码(默认值为单声道编码),其他参数取默认值即可。

ZegoAudioConfig *audioConfig = [ZegoAudioConfig configWithPreset:ZegoAudioConfigPresetHighQualityStereo];
[[ZegoExpressEngine sharedEngine] setAudioConfig:audioConfig];

4.2.2 设置音频采集双声道模式

调用 setAudioCaptureStereoMode 方法开启音频双声道采集,并根据实际场景设置 “Mode” 参数(默认值为始终不开启双声道),用于实现始终开启双声道采集或仅在推流时开启双声道。

[[ZegoExpressEngine sharedEngine] setAudioCaptureStereoMode:ZegoAudioCaptureStereoModeAlways];

4.2.3 推流

请参考 快速开始 - 实现流程 的 “3.3 推流”,此时所推流的音频是双声道,拉流端无需做额外的配置,直接拉流即可播放双声道音频。

双声道采集需要推流端使用支持双声道采集的设备作为音频输入源,一般手机的麦克风不支持采集双声道。

5 API 参考列表

方法 描述
enableHeadphoneMonitor 开启/关闭耳返
setHeadphoneMonitorVolume 设置耳返音量
setAudioConfig 设置音频质量配置
setAudioCaptureStereoMode 设置音频采集双声道模式
startPublishingStream 开始推流

6 常见问题

  1. 推流端开启双声道采集后,拉流端(iOS)使用有线耳机能正常播放双声道,但使用 AirPods 播放时却变成了单声道?

    iOS 由于系统限制,在使用蓝牙耳机时存在如下场景:

    • 如果拉流端既推流又需要拉流,例如通话场景下同时执行播放和录音操作,则只能播放单声道。
    • 如果确定拉流端仅需拉流而不用推流,则可以联系 ZEGO 技术支持获取解决方案。

获取Demo

获取本文的Demo、开发文档、技术支持。
获取SDK的商务活动、热门产品。
注册即构ZEGO开发者帐号,快速开始。

音视频开发进阶指南:基于iOS实现超低延时耳返相关推荐

  1. 《音视频开发进阶指南》读书笔记(一) —— 音视频基础概念

    前言 最近要学音视频,在图书馆借到这本<音视频开发进阶指南>,读了一段时间觉得挺好就在某宝买了. 以后一段时间应该都会沉浸在研究音视频中,开个专题记录哈每一章的读书笔记吧(以iOS开发的角 ...

  2. 《音视频开发进阶指南:基于Android与iOS平台的实践》源码下载地址

    年前买了这本书,想看下随书源码,一开始从CSDN下载频道下载电子书+源码,但那个源码不是这边书的. 从网上找了一段时间,终于找到了(其实在书的前言/勘误和支持中有给出),作者展晓凯的相关网站如下: 作 ...

  3. 音视频开发进阶指南--音视频概念基础

    音视频开发进阶指南--音视频概念基础 音频概念基础: 采样.量化和编码: 首先要对模拟信号进行采样,所谓采样就是在时间轴上对信号进行数字化.根据奈奎斯特定理(也称为采样定理),按比声音最高频率高2倍以 ...

  4. 23最新《Android音视频开发进阶指南》,音视频开发者速领

    作为Android开发程序员,我们时刻站在互联网的前端,而音视频作为现在乃至未来几年一个强劲的风口,吸引了许多程序员的关注. 那么音视频开发的行业现状究竟如何呢?我们又该怎样入门呢?请看下文: 音视频 ...

  5. 已拿字节、腾讯、墨墨 offer,音视频开发进阶指南pdf

    背了多少单词 (更慌了,随口说100个左右) 怎么知道有墨墨这个app的 (同学介绍) 你简历说你自己心思缜密,但是你简历上的句子的标点符号有问题啊.(emmm) 项目的UI问题 技术 : JavaS ...

  6. 基于Android实现K歌场景下超低延时耳返

    1 功能简介 在音视频应用中我们经常涉及到耳机麦克风和设备麦克风的切换.不同声道的配置.在遇到这种情况的时候,我们如何配置呢? 耳返即耳机采集监听,在设备上插入耳机(普通耳机或蓝牙耳机)后,能从本机耳 ...

  7. android音视频开发进阶指南,音视频开发进阶指南:基于Android与iOS平台的实践

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

  8. Android Studio在音视频开发进阶指南中的Mp3Encoder中遇到的问题

    增加C++中java曾调用Native代码中遇到的问题 主要的错误: 在对应的class文件的目录下,执行下面的命令生成JNI接口文件 javah -jni com.phuket.tour.studi ...

  9. 给Android工程师的音视频开发学习指南

    毕业至今,之前一直从事Android开发的工作,今年5月份开始接触音视频开发相关工作,于是打算写一个音视频相关专栏,让移动端的同学,能通过这个专栏快速掌握音视频相关知识,首先带来第一篇,主要讲讲移动端 ...

最新文章

  1. 轻有力读后感ppt_如果您希望招聘人员认真对待您,请建立强有力的个人叙述。...
  2. 关于DSP的GPIO的输入输出设置
  3. 分享一个Cnblogs简易APP
  4. 掉坑里了,小记一下.
  5. Unity3D游戏内存瘦身指南: UI优化是关键
  6. 验证Ross《随机过程》(第二版)1.9C
  7. 6 频率_6年了 AMD二代推土机CPU频率再次冲击8.2GHz
  8. C语言关键字之static
  9. 前端:分享几个前端素材网站
  10. 大数据技术——Spark实时计算
  11. ecshop模板支持php,ecshop模板不支持引入PHP语句的解决方法
  12. 2018年高教社杯全国大学生数学建模竞赛题目
  13. Linux发行版制作总结
  14. 【LeetCode】复数乘法
  15. Android 内置RTSP/RTMP服务器,实现局域网内视频推流与播放
  16. 开源项目车牌识别EasyPR的使用
  17. 华为云CDN加速服务,如何助企业扬帆远航
  18. 传感器的使用,高仿微信摇一摇,动画加声音
  19. 160cracked-4
  20. 联合利华投资10亿欧元,致力到2030年淘汰清洁产品中的化石燃料

热门文章

  1. [raid1 raid2 raid5 raid6 raid10的优缺点和做各自raid需要几块硬盘
  2. 多台电脑共享打印机怎么设置?
  3. python写游戏需要安装什么软件_python开发游戏的前期准备
  4. Vue 使用 JQuery方法 完美替代 JQuery
  5. django2.0 在安装mysqlclient 报错ERROR: Command errored out with exit status 1: python setup.py egg_info
  6. 【FMCW 03】测速
  7. 十进制数与N进制数据的转换
  8. java比较器参数只传进去一个_post请求springMVC后台,只传一个参数,后台用一个字符串接受,参数名对应,但入参却为null,求讲解和解决,谢谢...
  9. verilog将100mhz分频为1hz_使用verilog语言实现分频器 将50MHZ分为1hz和5hz
  10. 【Linux】在命令行中查看Linux内核版本的几种方法