反应原声
反应原生(RN)Android、iOS和macOS(Catalyst)平台的音频库,支持 新设 财务报告和审定财务报表 旧 RN建筑. 它涵盖:
- 输入音频流(麦克风)收听/录音.
- 音频样本回放.
- 音频系统管理实用功能.
- 还有东西要来.
赞助人:
贡献者
内容
- 安装
- 开始
- API 参考
- 类
- 输入音频结构 ——代表个人输入音频流.
- 构造器( ) ——创建 新设 输入音频结构 举个例子.
- addChunk 听牌( ) —— 添加一个新的音频数据块收听器 溪流。 溪流.
- 添加错误倾听器( ) ——在流中添加一个新的错误倾听器.
- . destroy () (中文(简体) ) ——破坏溪流 ——停止记录,并释放所有相关资源.
- getChunk () (中文(简体) ) - 回返 矩阵缓冲 带有音频块字节.
- .mute () (中文(简体) ) - 搅乱了溪流.
- 重新移动Chunk Listener () — 删除音频数据块听器 从溪来.
- . remove 错误倾听器( ) —— 说 从流中去除一个错误的收听器.
- 开始( ) ——启动音频流录音.
- . stop () (中文) - 拦住溪流.
- .unmute () (中文(简体) ) - 解开之前的哑巴.
- 活动 —— 说 真实 当溪流开始并重新编码时.
- 自动格式 - 持有提供给 页:1 构造器( )。 。 。 .
- .adio 来源 - 持有提供给 页:1 构造器( )。 。 。 .
- 频道配置 —— 持有提供给 页:1 构造器( )。 。 。 .
- 已安装 —— 说 真实 当溪口失声的时候.
- .样本 ——将溪流的采样率控制在 [赫兹[ [ ] [ ] ]. ].
- 样本大小 ——保持溪流采样(音频数据块) 大小,每个频道.
- 停止背景 —— 说 真实 如果该流被配置为停止 当应用程序离开前景时自动启动, 当它再次启动时自动启动 返回到前景.
- 样本显示器 ——代表音频样本播放器.
- 构造器( ) ——创建新 样本显示器 举个例子.
- 添加错误倾听器( ) 添加一个新的 玩家的收听器出错 .
- . destroy () (中文(简体) ) - 摧毁玩家, 释放所有相关资源.
- . 载( ) ——装入(额外)音频样本.
- 游戏( ) - 播放音频样本.
- . remove 错误倾听器( ) —— 说 从玩家中删除错误的收听器.
- . stop () (中文) ——停止音频样本回放.
- . 卸载( ) ——卸载音频样本.
- 输入音频结构 ——代表个人输入音频流.
- 常数
- 职能
- 配置审计系统( C) ——配置音频系统(输入和输出设备) 对于iOS,不做Android.
- 可输入( A) - 决定 真实 如果设备有可用的 音频输入源.
- 类型
- 类
安装
-
安装软件包及其对等依赖
npx install-peerdeps @dr.pogodin/react-native-audio -
跟随 反应-内在-允许 用于设置您的应用程序的文档 用于 记录-审计 (Android)和(或) 麦克风 (iOS)权限. 反应 - 内生 - 音频 库将自动请求这些权限, 如果需要, 当流出时 开始( ) 如果应用程序有 已正确配置以要求它们.
开始
一个更好的 开始 教程将被写入, 但是主要的想法 这是:
import {
AUDIO_FORMATS,
AUDIO_SOURCES,
CHANNEL_CONFIGS,
InputAudioStream,
} from "@dr.pogodin/react-native-audio";
function createAndStartAudioStream() {
const stream = new InputAudioStream(
AUDIO_SOURCES.RAW,
44100, // Sample rate in Hz.
CHANNEL_CONFIGS.MONO,
AUDIO_FORMATS.PCM_16BIT,
4096, // Sampling size.
);
stream.addErrorListener((error: Error) => {
// Do something with a stream error.
});
stream.addChunkListener((chunkId: number) => {
// You may pause the stream for chunk processing - this way you will not
// receive new chunk events until stream.unmute() is called. Note, `chunkId`
// argument is just a sequential chunk number, thus you may judge by it,
// whether any chunks have been skipped between this callback calls.
stream.mute();
const chunk: ArrayBuffer = stream.getChunk(chunkId);
// .getChunk(chunkId) returns "null" if `chunkId` value does not match ID
// of the latest chunk in the stream. This way, starting with v1.20.0 of
// the library, it will not crash with out-of-memory error even if you do
// not use stream.mute() - the native layer only keeps the latest chunk
// data, thus not consuming too much memory if your chunk processing is
// slower then generation of the chunks.
if (chunk) {
// Do something with the chunk.
}
// Resumes the stream.
stream.unmute();
});
stream.start();
// Call stream.destroy() to stop the stream and release any associated
// resources. If you need to temporarily stop and then resume the stream,
// use .mute() and .unmute() methods instead.
}
除此之外,图书馆还将包括其他辅助方法 到音频输入和输出.
API 参考
类
输入音频结构
class InputAudioStream;
这个 输入音频结构 类,如其名称所示,代表个人输入 从指定格式获取音频数据 音频源.
构造器( )
const stream = new InputAudioStream(
audioSource: AUDIO_SOURCES,
sampleRate: number,
channelConfig: CHANNEL_CONFIGS,
audioFormat: AUDIO_FORMATS,
samplingSize: number,
stopInBackground: boolean = true,
);
创建新 输入音频结构 举个例子 新创建的流不 记录音频,在本地方不会消耗资源,直到其 开始( ) 方法被称为.
audioSource—— 说 审计来源 - 音频源此流 我会听。 目前,它仅为Android所支持;在iOS上,此值 被忽略,该流从默认输入中获取音频数据 设备的来源.sampleRate—— 说 编号 - 抽样率[赫兹[ [ ] [ ] ]. ]. 44100赫兹是建议值,因为它是唯一的 保证在所有Android(和其他许多)装置上工作.channelConfig—— 说 章 次 页 次 —— 说 单曲 或者说 立体声 流线 模式.audioFormat—— 说 审计( F) ——音频格式.samplingSize—— 说 编号 取样(数据块)大小, 以块中每个通道的样本数量表示.stopInBackground—— 说 布尔 - 可选的。 这个 真实 (默认) 当应用程序离开前景时,流会自动暂停, 当应用程序返回时,该流会自动恢复 预想.
addChunk 听牌( )
stream.addChunkListener(listener: ChunkListener): void;
向流中添加一个新的音频数据块听器。 见 重新移动Chunk Listener () ,然后将听众从溪流中移除.
说明: 为相同的收听者( R) 对流对多次调用是安全的 ——收听者仍不会多次被加入溪口.
listener—— 说 弹簧听器 - 用音频调用 数据块当它们到达.
添加错误倾听器( )
stream.addErrorListener(listener: ErrorListener): void;
向溪流添加新的错误倾听器。 见 . remove 错误倾听器( ) ,然后将听众从溪流中移除.
说明: 为相同的收听者( R) 对流对多次调用是安全的 ——收听者仍不会多次被加入溪口.
listener—— 说 错误收听器 ——错误调用 细节,如果在溪流中发生任何错误.
. destroy () (中文(简体) )
stream.destroy(): void;
摧毁溪流——停止录音,并释放所有相关 资源,包括本地和联署材料。 一旦一条溪被摧毁, 无法重用.
getChunk () (中文(简体) )
stream.getChunk(id: number): ArrayBuffer | null;
回返 矩阵缓冲 带有流中最新音频块的字节数据,
如果给出 id 匹配最新音频块的标识; 否则它返回 无效· ;
即说. 如果您无法及时获取音频块数据, 它的数据将被丢弃
一旦下一个块变得可用—— 这种方式,即使你是
处理音频块的速度比生成的要慢, 您不使用
.mute () (中文(简体) )编号 :.unmute () (中文(简体) ) 方法,文库不会与外出相撞
出错(和收到) 无效 从 getChunk () (中文(简体) ) 你会知道,你有
缺少一些音频块.
.mute () (中文(简体) )
stream.mute(): void;
声入溪. 一条已失声的流仍然继续捕获音频数据块 音频源,从而不断增加块ID(见 弹簧听器, (中文(简体) ), 但是它不会向 JavaScript 层发送新的块事件 .
通话 .mute () (中文(简体) ) 在哑音或非活性(非录音)音频流上 没有效果。 另见 活动, (中文(简体) ), 已安装。 。 。 .
重新移动Chunk Listener ()
stream.removeChunkListener(listener: ChunkListener): void;
从溪去去取听者. 没有操作如果给出 listener 没有
与溪相接. 见 addChunk 听牌( ) 以添加听众.
listener—— 说 弹簧听器 - 监听器中断.
. remove 错误倾听器( )
stream.removeErrorListener(listener: ErrorListener): void;
从溪去去取听者. 没有操作如果给出 listener 没有
与溪相接. 见 添加错误倾听器( ) 连接听众.
listener—— 说 错误收听器 - 监听器中断.
开始( )
stream.start(): Promise<boolean>;
启动音频流记录。 这种方法实际上初始化了流 开始录音.
说明: 必要时,此方法将询问应用程序用户音频重编码 权限,使用 反应-内在-允许 图书馆.
- 决定 布尔 价值 - 真实 如果溪流已经开始 成功且为 活动, (中文(简体) ), 虚假 否则.
. stop () (中文)
stream.stop(): Promise<void>;
拦住溪口. 与 .mute () (中文(简体) ) 方法, . stop () (中文) 实际停止 音频流并释放其资源在本土方面, 与 . destroy () (中文(简体) ) 它不释放其在联合来文中的资源 层即说. 因此,不放弃所有连接的听众的引用) 允许 开始( ) 此流实例再次出现( 技术上将 将进入一条新的溪流 在本土一侧, 但这将是不透明的到终点 联合来文一方).
- 断取一出溪.
.unmute () (中文(简体) )
stream.unmute(): void;
取消先前的调用 已安装 流线。 如果对不活动调用则无效果 (未启动),或已经变哑的流.
活动
stream.active: boolean;
唯相读取. 真实 当溪流是 开始 和记录, 虚假 否则.
自动格式
stream.audioFormat: AUDIO_FORMATS;
唯相读取. 持有提供的音频格式值 输入音频结构是因为 构造器( )。 。 。 . 审计( F) enum提供有效的格式值.
.adio 来源
stream.audioSource: AUDIO_SOURCES;
唯相读取. 持有提供给 输入音频结构是因为 构造器( )目前它只对Android设备有影响 为 iOS 忽略. 审计来源 enum提供有效的音频源值.
频道配置
stream.channelConfig: CHANNEL_CONFIGS;
唯相读取. 持有频道模式( R)单曲 或者说 立体声(b) 提供给 输入音频结构是因为 构造器( )。 。 。 . 章 次 页 次 enum 提供有效的 频道模式值 .
已安装
stream.muted: boolean;
唯相读取. 真实 当溪流被变音 .mute () (中文(简体) ), (中文(简体) ), 虚假 否则.
.样本
stream.sampleRate: number;
唯相读取. 持有溪流提供的样本率 构造器( ), (中文(简体) ), 在 [赫兹[ [ ] [ ] ]. ].
样本大小
stream.samplingSize: number;
唯相读取. 持有流的采样(音频数据块)大小,提供给 溪流 构造器( )。值是每个通道的样本数量, 因此,对于多通道流来说,实际块大小将是: 此数字,以及字节中的样本大小可能因不同而异 自动格式。 。 。 .
停止背景
stream.stopInBackground: boolean;
唯相读取. 真实 如果将流设置为自动 . stop () (中文) 当应用程序 叶子前景,和 开始( ) 当它回到前方时.
样本显示器
class SamplePlayer;
代表音频样本播放器 。 准备装入内存 一组简短的音频片段,然后可以按要求低调播放 长生不老.
我们在Android上使用 声音波 请检查date=中的日期值 (帮助) 细节。 特别注意到: 每个解码后的声音内部限于一个 兆字节存储,whchi在44.1Hz立体声时表示约5.6秒 (以较低的抽样率或频道口罩计算,持续时间按比例较长) (单项).
构造器( )
const player = new SamplePlayer();
创建新 样本显示器 举个例子 注意这种创建 样本显示器 实例已经在本地一侧分配了一些资源,从而释放 那些资源,你必须使用它 . destroy () (中文(简体) ) 方法 一旦不再需要这个例子.
添加错误倾听器( )
player.addErrorListener(listener: ErrorListener): void;
向玩家添加错误的收听器。 如果给出则不做 listener 实值
已添加到此玩家 .
listener—— 说 错误收听器 - 错误的倾听者.
. destroy () (中文(简体) )
player.destroy(): Promise<void>;
破坏玩家实例,释放所有相关资源. 销毁一次 无法重用玩家实例 .
- 一旦完成就决定了.
. 载( )
player.load(sampleName: string, samplePath: string): Promise<void>;
将一个(额外)音频样本装入玩家.
sampleName—— 说 字符串 - 样本名称,您将参考 在其他方法中,例如 游戏( ), (中文(简体) ), 样板Player.stop (), (中文(简体) ), 财务报告和审定财务报表 . 卸载( )如果与先前装入样品的名称相匹配,则 样本将被替换 .samplePath—— 说 字符串 ——设备上样本文件的路径. 目前仅支持从正则文件中装入样本(譬如说. 没有 从Android资产装入的可能性,而不首先将资产复制到 a 常规文件).- 一旦样品被装入并解码,即可解码,从而准备播放.
游戏( )
player.play(sampleName: string, loop: boolean): Promise<void>;
播放先前装入的音频样本 . 载( ) 方法.
注: 在目前的执行中,开始播放样本总是停止 正在播放由同一玩家(如果有的话)播放的样本. 没有任何技术障碍支持在 与此同时,它只是需要一些更多的发展努力.
注: 使用 添加错误倾听器( ) 方法 重播期间任何错误的细节。 虽然 游戏( ) 如果回放失败启动, 它本身会拒绝 提供除失败事实之外的任何细节,它也不捕捉 任何进一步的错误(因为回放本身是同步的).
sampleName—— 说 字符串 - 样本名称,在装入时被打乱 与 . 载( ) 方法.loop—— 说 布尔 - 设定 真实 无限循环样本; 或者说 虚假 来玩一次.- 启动播放后决定; 如果播放失败, 拒绝播放 由于一些错误.
. remove 错误倾听器( )
player.removeErrorListener(listener: ErrorListener): void;
删除 listener 从此 player如果听者不听,则什么都不做
连接到玩家.
listener—— 说 错误收听器 —— 断开的收听器出错 .
. stop () (中文)
player.stop(sampleName: string): Promise<void>;
停止重播样本, 如果样本未被此播放则不做任何工作 游戏机.
sampleName—— 说 字符串 ——样本名称.- 一旦完成就决定了.
. 卸载( )
player.unload(sampleName: string): Promise<void>;
将音频样本提前装入此播放器 .
sampleName—— 说 字符串 ——样本名称.- 一旦完成就决定了.
常数
审计( F)
enum AUDIO_FORMATS {
PCM_8BIT: number;
PCM_16BIT: number;
PCM_FLOAT: number;
};
提供有效 自动格式 数值。 见 Android 文档 对于这三种格式的确切定义; 在iOS上应当相同 设备.
说明: 至少Android允许其它音频格式,我们可能包括 未来在这里.
审计来源
enum AUDIO_SOURCES {
CAMCODER: number;
DEFAULT: number;
MIC: number;
REMOTE_SUBMIX: number;
RAW: number;
VOICE_CALL: number;
VOICE_COMMUNICATION: number;
VOICE_DOWNLINK: number;
VOICE_PERFORMANCE: number;
VOICE_RECOGNITION: number;
VOICE_UPLINK: number;
};
提供有效 .adio 来源 数值。 现在,它们已经对Android生效了 只有设备,而且它们代表了下列相应的值: Media Recorders. (原始内容存档于2018-10-21). 音频来源。 。 。 .
章 次 页 次
enum CHANNEL_CONFIGS {
MONO: number;
STEREO: number;
};
提供有效 频道配置 数值.
说明: 现在它只提供了两个价值, 蒙古语 财务报告和审定财务报表 定 约不过, 至少Android似乎支持额外的频道,这些频道可以添加到 未来,看 Android 音频格式文档。 。 。 .
(简体中文)
const IS_MAC_CATALYST: boolean;
等数 真实 如果应用程序运行在macOS(Catalyst)平台上; 虚假 否则.
职能
配置审计系统( C)
function configAudioSystem(): Promise<void>;
配置音频系统(输入输出设备).
目前它在Android上无所作为;在iOS上它(重新)配置音频 设定 播放记录( R) 分类和启动会话.
说明: 在iOS上,如果 播放记录( R) 设备中没有类别, 它设置 重播 类别;如果两个类别都没有, 函数拒绝其结果承诺。 该功能还设置如下: iOS 音频会话的选项 : 允许蓝牙, (中文(简体) ), 允许蓝牙A2DP,以及 默认语音。 。 。 .
见 iOS 文档 关于iOS音频会话和分类的进一步详情.
- 一旦完成就决定了.
可输入( A)
function getInputAvailable(): Promise<boolean>;
- 决定: 真实 如果设备有可用的音频输入源, 虚假 否则.
类型
弹簧听器
type ChunkListener = (chunkId: number) => void;
音频数据类型 输入音频结构 与 addChunk 听牌( ) 方法.
chunkId—— 说 编号 - 后续块号,交给 getChunk () (中文(简体) ) 获取块数据的方法。 当溪流是 已安装 块 对跳过音频块的数字仍在递增,因此chunkId可用于判断溪流失声时是否漏出任何块.
错误收听器
type ErrorListener = (error: Error) => void;
可连接到一个错误的收听器类型 输入音频结构 与 添加错误倾听器( ) 方法.
error—— 说 错误 ——流出错误.