Android录制和播放PCM数据
生活随笔
收集整理的這篇文章主要介紹了
Android录制和播放PCM数据
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
PCM是android系統(tǒng)中的原生音頻數(shù)據(jù),那么我們?nèi)绾武浿坪筒シ胚@個(gè)格式的byte[]數(shù)據(jù)呢?
錄制
錄制很簡(jiǎn)單,使用AudioRecord,注意read前一定要先startRecording
var record = AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 16000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 1280)//這幾個(gè)參數(shù)分別是 數(shù)據(jù)來(lái)源、采樣率、聲道、格式和緩存buffer大小 record.startRecording() Thread{while (true) {var data = ByteArray(640)record.read(data, 0, 640)...} }.start()停止錄制調(diào)用stop函數(shù),并一定要調(diào)用release函數(shù)進(jìn)行資源釋放
播放
播放也簡(jiǎn)單,使用AudioTrack,同樣要先play起來(lái)再寫(xiě)數(shù)據(jù)
var track = AudioTrack(AudioManager.STREAM_VOICE_CALL, 16000, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, 1296, AudioTrack.MODE_STREAM)//這幾個(gè)參數(shù)分別是 流類型(哪種聲音)、采樣率、聲道、格式、緩存buffer大小、模式(靜態(tài)數(shù)據(jù)還是流,byte[]是流) track.play() Thread{while (true) {...track.write(result, 0, length)} }.start()同樣,播放完要stop并release釋放資源
總結(jié)
以上是生活随笔為你收集整理的Android录制和播放PCM数据的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Flutter入门:自定义dialog
- 下一篇: AS安装APK失败的两种情况