1 使用场景

Android 无法直接采集双声道,用户如果想实现播放的音频具有双声道效果,可以参考本文。

2 实现流程

双声道效果实现的主流程为:

下文将分别讲述各个步骤。

2.1 输入双声道数据

主播端输入的数据需要确保为双声道数据,有以下几种方式可以实现:

业务方通过外部采集接口,输入双声道 PCM 数据给 SDK 编码后再发送,流程如下图所示:

业务方通过外部采集接口,输入双声道 AAC 编码后数据给 SDK 发送,流程如下图所示:

音频外部采集和渲染使用详见: 高级功能指南-音频外部采集与渲染,本文不再赘述。

业务方通过外部音频前处理接口,将 SDK 采集的数据处理为双声道效果,再将 PCM 数据回传给 SDK 编码 ,流程如下图所示:

业务方通过外部音频前处理接口,将 SDK 采集的数据处理为双声道效果,再将 AAC 编码后数据回传给 SDK 编码 ,流程如下图所示:

音频前处理使用详见: 高级功能指南-音频前处理,本文不再赘述

请注意,业务方必须确保编码之前输入的 PCM 数据为双声道效果数据。如果采集为单声道数据,编码为双声道,那么这两个声道数据播放时也是不会有立体声效果的。

2.2 设置推流编码双声道

业务方调用该 API 设置编码双声道。该 API 需要在初始化 SDK 后,推流前调用。

ZegoLiveRoom.java

/**

* 设置推流音频声道数.

*

*

注意:

*
1. 必须在初始化 SDK,调用推流前设置。

*
2. setLatencyMode 设置为 ZEGOAPI_LATENCY_MODE_NORMAL 或 ZEGOAPI_LATENCY_MODE_NORMAL2 才能设置双声道(这两个模式下默认为单声道),在移动端双声道通常需要配合音频前处理才能体现效果; setLatencyMode 设置为 ZEGO_LATENCY_MODE_LOW3 强制为双声道,就算设置为单声道也是无效的(这个音频模式下只支持双声道)。

*

* @param count 声道数,1 或 2,默认为 1(单声道)

*/

public void setAudioChannelCount(int count)

2.3 设置混流编码双声道

混流模式下,主播连麦后,连麦的流会经过混流服务器。为了让观众听到双声道效果,需要设置混流服务器编码为双声道。该设置项是混流配置 ZegoCompleteMixStreamInfo 中的 channels:

/** 混流配置 */

public final class ZegoCompleteMixStreamInfo {

/** 输出流名或 url,

* @see #outputIsUrl

*/

public String outputStreamId;

/**

* true: outputStreamId 为完整 rtmp url,false: outputStreamId 为流名

*/

public boolean outputIsUrl;

/**

* 混流输出帧率

*/

public int outputFps;

/**

* 混流输出视频码率

*/

public int outputBitrate;

/**

* 混流输出音频码率

*/

public int outputAudioBitrate;

/**

* 混流输出视频分辨率宽

*/

public int outputWidth;

/**

* 混流输出视频分辨率高

*/

public int outputHeight;

/**

* 混流输出音频格式,默认值为 0。可选值为 0:默认编码;1:可选编码

*/

public int outputAudioConfig;

/**

* 混流输入流列表

*/

public ZegoMixStreamInfo[] inputStreamList;

/**

* 用户自定义数据

*

注意: 必须使用{@link ByteBuffer#allocateDirect}创建, 否则数据不能传递给sdk

*/

public ByteBuffer userData;

/**

* 用户自定义数据长度.

*/

public int lenOfUserData;

/**

* 混流声道数, 默认为单声道.

*/

public int channels = 1;

/**

* 混流背景颜色,前三个字节为 RGB,即 0xRRGGBBxx

*/

public int outputBackgroundColor;

/**

* 混流背景图,支持预设图片,如 (preset-id://xxx)

*/

public String outputBackgroundImage;

}

混流参数的设置详见:高级功能指南-混流

2.4 播放双声道

由于 ZEGO SDK 默认使用双声道播放,用户使用 SDK 播放时,无需做额外的设置。但是,请注意,如果开发者采用音频外部采集和渲染,播放时需要使用双声道才会有立体声效果!

java 双声道音频_Android 播放音频如何实现双声道效果相关推荐

  1. iOS 9音频应用播放音频之音量设置与声道设置

    iOS 9音频应用播放音频之音量设置与声道设置 iOS 9音频应用音量设置 音量又称响度.音强,是指人耳对所听到的声音大小强弱的主观感受,其客观评价尺度是声音的振幅大小.在iOS 9音频应用的应用中, ...

  2. iOS 9音频应用播放音频之iOS 9音频播放进度

    iOS 9音频应用播放音频之iOS 9音频播放进度 iOS 9音频应用开发播放进度 音频文件在播放后经过了多久以及还有多久才可以播放完毕,想必是用户所关注的问题.为了解决这一问题,在很多的音乐播放器中 ...

  3. iOS 9音频应用播放音频之控制播放速度

    iOS 9音频应用播放音频之控制播放速度 iOS 9音频控制播放速度 iOS9音频文件在播放时是以一定的速度进行的.这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能.要实现i ...

  4. ​iOS 9音频应用播放音频之第一个ios9音频实例2

    ​iOS 9音频应用播放音频之第一个ios9音频实例2 ios9音频应用关联 iOS9音频应用中对于在主视图上添加的视图或控件,在使用它们时必须要与插座变量进行关联.ios9插座变量其实就是为主视图中 ...

  5. iOS 9音频应用播放音频之第一个ios9音频实例

    iOS 9音频应用播放音频之第一个ios9音频实例 第一个ios9音频实例 为了让开发者可以对上面的内容有更加深入的了解,本节将实现播放音频的第一个实例.在此实例中会涉及到项目的创建.界面设计.关联以 ...

  6. iOS 9音频应用播放音频之ios9音频基本功能

    iOS 9音频应用播放音频之ios9音频基本功能 在iOS 9音频应用开发中最为简单和常用的就是AVFoundation框架中的AVAudioPlayer类.虽然AVAudioPlayer类不能播放网 ...

  7. pyaudio录制音频和播放音频

    目录 前期准备 播放音频文件 录制音频文件 曾遇到的问题 其它 前期准备 pip install pyaudio wave 播放音频文件 import pyaudio import waveCHUNK ...

  8. android怎么播放音频,Android播放音频的两种方式

    一种使用MediaPlayer,使用这种方式通常是播放比较长的音频,如游戏中的背景音乐. 代码如下: private MediaPlayer mPlayer = null; mPlayer = Med ...

  9. 单声道数据转双声道_WAV格式播放时,如何双声道转为单声道。

    这个地方填充该如何做?播放双声道的音乐没有问题,播放单声道的音乐时,音调不对... //ìî3äbuf //buf:êy¾YÇø //size:ìî3äêy¾Yá¿ //bits:λêy(16/24 ...

最新文章

  1. 【安卓开发】找出安卓手机耗电元凶
  2. C/C++运行时库 解释
  3. Exception in thread main expected 'document start', but found BlockMappingStart in 'reader'(测试了)
  4. 数据库班级字段怎么定义名称_班级名称
  5. 18 岁少年盗取价值 90 万元加密货币,交易所被迫关停!
  6. 浅议磁盘分区——从MBR到GPT
  7. redis 主从不同步连接不上
  8. mac 开启android 模拟器,折腾mac的经验积累 2:mac上如何玩安卓模拟器
  9. Ubuntu16.04 安装 卸载 pip
  10. Laravel 生成Controller
  11. CAD中DWF(DXF)数据在GIS上的应用
  12. android 检测输入法,Android判断软键盘 输入法 是否显示
  13. The word ‘localhost‘ is not correctly spelled 这个问题怎么解决
  14. 综合实践计算机的入门知识教学设计,3-6年级综合实践活动3.我是电脑小画家_教案、教学设计_市级优课(0001)【信息技术】.doc...
  15. 基于ShineBlink物联网开发板和机智云平台开发的“针对短期内宠物无人照顾的智能宠物屋”系统
  16. 红米k30 android版本,红米K30系列机型众多,傻傻分不清楚?看完这篇你就懂了
  17. 结构光三维重建基本原理
  18. vue实现一键换肤效果(白天晚上模式切换)
  19. 完全二叉树最后一个非叶子节点
  20. 管家婆进销存创业板3.0.1.33

热门文章

  1. go mod管理golang包
  2. 天津理工大学计算机工程学院院长,王法玉
  3. 幼师资格证综合素质计算机知识点,幼师资格证复习资料
  4. Machine Learning学习计划
  5. leetcode 5 Longest Palindromic Substring Java JavaScript解法
  6. Android开发之发送短信
  7. 探索C#之6.0语法糖剖析
  8. 教你怎么使用你的电脑
  9. sbt笔记二 Running
  10. 1-Tenor AF AFT400-实战-基本配置