短视频 SDK Android(录音)

通过录音接口可以实现旁白(Voiceover)功能。TAVAudioRecorder 类提供录音功能,支持设置采样率、声道和编码格式,包含开始、暂停、恢复和停止方法。

相关产品
短视频 SDK 产品页,含版本规格、价格与购买入口。

三、TAVAudioRecorder

public class TAVAudioRecorder { // 构造函数 public TAVAudioRecorder(String outputPath); public TAVAudioRecorder(String outputPath, int sampleRate, int channelCount, @PcmEncoding int pcmEncoding);}

四、错误码定义

错误码常量 值 描述
ERROR_AUDIO_FILE_NOT_EXIST 0x1 音频文件不存在。
ERROR_AUDIO_OUT_OF_MEMORY 0x2 内存不足。
ERROR_AUDIO_ILLEGAL_ARGUMENT 0x3 非法参数。
ERROR_AUDIO_INIT_AUDIORECORD_FAILED 0x4 初始化录音设备失败。
ERROR_AUDIO_RECORD_START_FAILED 0x5 开始录音失败。
ERROR_AUDIO_RECORD_READ_FAILED 0x6 读取录音数据失败。

五、注意事项

1. 权限要求:需要 android.permission.RECORD_AUDIO 权限。

2. 线程安全:所有方法调用应在同一线程(建议使用工作线程)。

3. 性能优化:避免在 processBuffer 中执行耗时操作。

4. 格式支持:

·输出格式:MP4A(AAC 编码)。

·采样深度:支持8位/16位 PCM。

·声道:支持单声道/立体声。

七、开始录音

/** * 开始录音 * 状态要求:STATE_INITIALIZED 或 STATE_PAUSED */public void start();

八、暂停录音

/** * 暂停录音 * 状态要求:STATE_STARTED */public void pause();

九、恢复录音

/** * 恢复录音(实际调用start方法) */public void resume();

十、停止录音

/** * 停止录音并完成文件写入 * 状态要求:任何状态 */public void stop();

十一、释放资源

/** * 释放录音器资源 * 说明:内部会先结束录音(未停止时自动 stop),无需在此之前手动调用 stop() */public void release();

十三、设置录音监听器

/** * 设置录音状态回调 * @param listener 录音监听器 */public void setOnRecordingListener(OnRecordingListener listener);

十四、获取已录制时长

/** * 获取已录制的时长(微秒) * @return 已录制的时长 */public long getRecordedTimeUs();

十五、获取音频延迟

/** * 音频从调用开始到真正开始录制的时差(毫秒) * @return 音频延迟值 */public int getDelay();

十七、OnRecordingListener

public interface OnRecordingListener { /** * 处理录音数据缓冲区 * @param buffer 原始PCM数据 * @param count 数据长度 * @return 处理后的数据(可直接返回原始buffer) */ byte[] processBuffer(byte[] buffer, int count); /** * 录音完成回调 */ void onFinish(); /** * 错误回调 * @param what 错误码(见错误码定义) */ void onError(int what);}

十九、基础录音流程

// 创建录音实例(输出路径,采样率44100,单声道,16位采样)TAVAudioRecorder recorder = new TAVAudioRecorder(context.getFilesDir() + "/record.mp4a", 44100, 1, AudioFormat.ENCODING_PCM_16BIT);// 设置录音监听recorder.setOnRecordingListener(new TAVAudioRecorder.OnRecordingListener() { @Override public byte[] processBuffer(byte[] buffer, int count) { // 可在此处处理原始PCM数据 return buffer; } @Override public void onFinish() { // 录音完成处理 } @Override public void onError(int what) { // 错误处理 }});// 开始录音recorder.start();// 暂停录音recorder.pause();// 恢复录音recorder.resume();// 停止录音recorder.stop();// 释放资源recorder.release();

20、获取录音信息

// 获取已录制时长(微秒)long duration = recorder.getRecordedTimeUs();// 音频从调用开始到真正开始录制的时差int delay = recorder.getDelay();

赞 (0)
上一篇 4天前
下一篇 4天前