Android录制和播放PCM数据

Posted BennuCTech

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android录制和播放PCM数据相关的知识,希望对你有一定的参考价值。

PCM是android系统中的原生音频数据,那么我们如何录制和播放这个格式的byte[]数据呢?

录制

录制很简单,使用AudioRecord,注意read前一定要先startRecording

var record = AudioRecord(MediaRecorder.Audiosource.VOICE_COMMUNICATION, 16000, 
    AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 1280)
    //这几个参数分别是 数据来源、采样率、声道、格式和缓存buffer大小
record.startRecording()
Thread
    while (true) 
        var data = ByteArray(640)
        record.read(data, 0, 640)
        ...
    
.start()

停止录制调用stop函数,并一定要调用release函数进行资源释放

播放

播放也简单,使用AudioTrack,同样要先play起来再写数据

var track = AudioTrack(AudioManager.STREAM_VOICE_CALL, 16000, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
    AudioFormat.ENCODING_PCM_16BIT, 1296, AudioTrack.MODE_STREAM)
    //这几个参数分别是 流类型(哪种声音)、采样率、声道、格式、缓存buffer大小、模式(静态数据还是流,byte[]是流)
track.play()
Thread
    while (true) 
        ...
        track.write(result, 0, length)
    
.start()

同样,播放完要stop并release释放资源

关注公众号:BennuCTech,获取更多干货!

以上是关于Android录制和播放PCM数据的主要内容,如果未能解决你的问题,请参考以下文章

FFPlay播放pcm和yuv帧数据

FFPlay播放pcm和yuv帧数据

无法在 Android 中播放使用 AudioRecord 录制的 pcm 文件

Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能

在 HTC One 上以 16khz 单声道 PCM (WAV) 录制时出现断断续续的音频

将 PCM 录制的数据写入 .wav 文件(java android)