object AudioEncodeUtil {
private const val TAG = "AudioEncodeUtil"
/**
* PCM 文件转 WAV 文件
* @param inPcmFilePath 输入 PCM 文件路径
* @param outWavFilePath 输出 WAV 文件路径
* @param sampleRate 采样率,例如 44100
* @param channels 声道数 单声道 1 或 双声道 2
* @param bitNum 采样位数,8 或 16
*/
fun convertPcm2Wav(
inPcmFilePath: String?,
outWavFilePath: String?,
sampleRate: Int ,
channels: Int ,
bitNum: Int
) {
if (inPcmFilePath.isNullOrEmpty() || outWavFilePath.isNullOrEmpty()) {
MLog.d(
TAG,
"convertPcm2Wav: 文件路径为空 inPcmFilePath = $inPcmFilePath, outWavFilePath = $outWavFilePath"
)
return
}
MLog.d(TAG, "convertPcm2Wav: 开始转 WAV")
var `in`: FileInputStream? = null
var out: FileOutputStream? = null
val data = ByteArray(1024)
try {
`in` = FileInputStream(inPcmFilePath)
out = FileOutputStream(outWavFilePath)
// PCM 文件大小
val totalAudioLen = `in`.channel.size()
writeWaveFileHeader(out, totalAudioLen, sampleRate, channels, bitNum)
var length = 0
while (`in`.read(data).also {
length = it } > 0) {
out.write(data, 0, length)
}
} catch (e:
音频-pcm -> wav 编码
于 2023-03-15 21:24:57 首次发布
该代码实现了一个将PCM音频文件转换为WAV格式的功能,主要涉及音频文件的头部信息设置,包括采样率、声道数和位数。转换过程中,首先检查输入和输出文件路径,然后写入WAV文件头,最后读取PCM数据并写入WAV文件。
摘要由CSDN通过智能技术生成