android pcm格式转mp3,将MP3转换为PCM并在Android中播放

我正在尝试将mp3文件转换为pcm文件并尝试播放它.我希望值为int16.我能够使用android中的MediaCodec和MediaExtractor成功转换它.我能够正常播放它(我不得不改变采样率以播放PCM),而我直接将其写为字节数组,如下所示:

override fun onOutputBufferAvailable(codec: MediaCodec, index: Int, info: MediaCodec.BufferInfo) {

Log.d(TAG, "onOutputBufferAvailable")

val buffer = mediaCodec.getOutputBuffer(index)

val b = ByteArray(info.size - info.offset)

val a = buffer.position()

buffer.get(b)

buffer.position(a)

mediaCodec.releaseOutputBuffer(index, true)

Log.i(TAG,"byte data: "+b.contentToString())

fos.write(b,0,info.size-info.offset)

}

但正如我所说,我希望它作为Int16(我的印象是这可以转换为int并保存.如果我错了请纠正我)当我将它保存为int这样的

override fun onOutputBufferAvailable(codec: MediaCodec, index: Int, info: MediaCodec.BufferInfo) {

Log.d(TAG, "onOutputBufferAvailable")

val buffer = mediaCodec.getOutputBuffer(index)

val byteArray = ByteArray(info.size - info.offset)

val bufferPosition = buffer.position()

buffer.get(byteArray)

buffer.position(bufferPosition)

mediaCodec.releaseOutputBuffer(index, true)

for (i in byteArray){

Log.i(TAG,"byte data: "+i.toInt())

fileWriter.write(i.toString()+" ")

}

}

它充满了噪音.我需要它作为int,以便我可以对音频文件进行一些操作.如果你想查看整个项目,它是在github

我想知道如何正确地将pcm文件写为int值并在android中播放.提前致谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值