如何将 bytesArray 作为 FFmpeg 执行命令数组的输入和输出传递?

问题描述 投票:0回答:0

我在 FFmpeg 库中工作,在那里我开发了基于麦克风的读写音频数据,在那里我遇到了处理一些音频数据的挑战。但我不想将文件存储为输出流或其他东西,因为它会增加额外的延迟。

这是我使用的代码

implementation 'com.arthenica:mobile-ffmpeg-full:4.2.2.LTS'
private fun processAudioAsChipmunk(audioData: ShortArray, record: AudioRecord): ShortArray {
        val sampleRate = record.sampleRate
        val channels = record.channelCount
        val filter = "asetrate=2*${sampleRate},aresample=48000,atempo=2"
        val outputData = audioData
        val cmd = arrayOf(
            "-y",
            "-i",
            fileName1,  // here input filepath is passed, i want it to be ByteArray(audioData)
            "-af",
            "asetrate=22100,atempo=1/2",
            fileName2 //here output filepath is passed, i want it to be ByteArray(outputData)
        )//Chipmunk

        FFmpeg.execute(cmd)
        return outputData
    }

现在我想读写 audioData 而不存储和使用它作为文件名。

下面的代码显示了我用来读写音频数据的代码

read = record!!.read(audioData, 0, minBuffer) //AudioRecord
val processedAudioData = processAudioAsChipmunk(audioData, record!!) // Here! 
write = player!!.write(processedAudioData, 0, read) //AudioTrack
android kotlin ffmpeg android-ffmpeg
© www.soinside.com 2019 - 2024. All rights reserved.