gpt4 book ai didi

android - 如何在视频系统中捕获和编码音频_Android

转载 作者:行者123 更新时间:2023-12-03 00:50:32 25 4
gpt4 key购买 nike

我正在尝试在android中构建开源视频系统,因为我们无法访问封闭系统中的数据。在这个系统中,我们可以修改相机捕获的原始数据。

我使用MediaCodec和MediaMux进行视频数据编码和混合工作,并且可以正常工作。但是我对音频部分一无所知。我使用onFramePreview来获取每个帧并按帧进行编码/混合工作。但是如何同时进行音频记录(我的意思是按帧捕获音频,对其进行编码,然后将数据发送到MediaMux)。

我做了一些研究。似乎我们使用了audiorecorder来获取音频的原始数据。但是Audiorecorder会持续进行录音,我认为它无法正常工作。

谁能给我提示吗?谢谢!

最佳答案

像这样创建audioRecorder:

private AudioRecord getRecorderInstance() {
AudioRecord ar = null;
try {
//Get a audiorecord
int N = AudioRecord.getMinBufferSize(8000,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT);
ar = new AudioRecord(AudioSource.MIC, 8000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, N*10);
}
catch (Exception e) {

}
return ar; //Returns null if mic is unavailable
}

稍后准备并发送数据以进行编码和混合,如下所示是单独的线程:
public class MicrophoneInput implements Runnable {
@Override
public void run() {
// Buffer for 200 milliseconds of data, e.g. 400 samples at 8kHz.
byte[] buffer200ms = new byte[8000 / 10];

try {
while (recording) {
audioRecorder.read(buffer200ms, 0, buffer200ms.length);

//process buffer i.e send to encoder
//don't forget to set correct timestamps synchronized with video
}
}
catch(Throwable x) {
//
}
}
}

关于android - 如何在视频系统中捕获和编码音频_Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com