java 双声道音频_Android 播放音频如何实现双声道效果
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 播放音频如何实现双声道效果相关推荐
- iOS 9音频应用播放音频之音量设置与声道设置
iOS 9音频应用播放音频之音量设置与声道设置 iOS 9音频应用音量设置 音量又称响度.音强,是指人耳对所听到的声音大小强弱的主观感受,其客观评价尺度是声音的振幅大小.在iOS 9音频应用的应用中, ...
- iOS 9音频应用播放音频之iOS 9音频播放进度
iOS 9音频应用播放音频之iOS 9音频播放进度 iOS 9音频应用开发播放进度 音频文件在播放后经过了多久以及还有多久才可以播放完毕,想必是用户所关注的问题.为了解决这一问题,在很多的音乐播放器中 ...
- iOS 9音频应用播放音频之控制播放速度
iOS 9音频应用播放音频之控制播放速度 iOS 9音频控制播放速度 iOS9音频文件在播放时是以一定的速度进行的.这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能.要实现i ...
- iOS 9音频应用播放音频之第一个ios9音频实例2
iOS 9音频应用播放音频之第一个ios9音频实例2 ios9音频应用关联 iOS9音频应用中对于在主视图上添加的视图或控件,在使用它们时必须要与插座变量进行关联.ios9插座变量其实就是为主视图中 ...
- iOS 9音频应用播放音频之第一个ios9音频实例
iOS 9音频应用播放音频之第一个ios9音频实例 第一个ios9音频实例 为了让开发者可以对上面的内容有更加深入的了解,本节将实现播放音频的第一个实例.在此实例中会涉及到项目的创建.界面设计.关联以 ...
- iOS 9音频应用播放音频之ios9音频基本功能
iOS 9音频应用播放音频之ios9音频基本功能 在iOS 9音频应用开发中最为简单和常用的就是AVFoundation框架中的AVAudioPlayer类.虽然AVAudioPlayer类不能播放网 ...
- pyaudio录制音频和播放音频
目录 前期准备 播放音频文件 录制音频文件 曾遇到的问题 其它 前期准备 pip install pyaudio wave 播放音频文件 import pyaudio import waveCHUNK ...
- android怎么播放音频,Android播放音频的两种方式
一种使用MediaPlayer,使用这种方式通常是播放比较长的音频,如游戏中的背景音乐. 代码如下: private MediaPlayer mPlayer = null; mPlayer = Med ...
- 单声道数据转双声道_WAV格式播放时,如何双声道转为单声道。
这个地方填充该如何做?播放双声道的音乐没有问题,播放单声道的音乐时,音调不对... //ìî3äbuf //buf:êy¾YÇø //size:ìî3äêy¾Yá¿ //bits:λêy(16/24 ...
最新文章
- 【安卓开发】找出安卓手机耗电元凶
- C/C++运行时库 解释
- Exception in thread main expected 'document start', but found BlockMappingStart in 'reader'(测试了)
- 数据库班级字段怎么定义名称_班级名称
- 18 岁少年盗取价值 90 万元加密货币,交易所被迫关停!
- 浅议磁盘分区——从MBR到GPT
- redis 主从不同步连接不上
- mac 开启android 模拟器,折腾mac的经验积累 2:mac上如何玩安卓模拟器
- Ubuntu16.04 安装 卸载 pip
- Laravel 生成Controller
- CAD中DWF(DXF)数据在GIS上的应用
- android 检测输入法,Android判断软键盘 输入法 是否显示
- The word ‘localhost‘ is not correctly spelled 这个问题怎么解决
- 综合实践计算机的入门知识教学设计,3-6年级综合实践活动3.我是电脑小画家_教案、教学设计_市级优课(0001)【信息技术】.doc...
- 基于ShineBlink物联网开发板和机智云平台开发的“针对短期内宠物无人照顾的智能宠物屋”系统
- 红米k30 android版本,红米K30系列机型众多,傻傻分不清楚?看完这篇你就懂了
- 结构光三维重建基本原理
- vue实现一键换肤效果(白天晚上模式切换)
- 完全二叉树最后一个非叶子节点
- 管家婆进销存创业板3.0.1.33