Я пытаюсь добавить аудио в видео, созданное под открытым исходным кодом проектомAndroid, добавив аудио трека Muxer
Специально для https://github.com/madisp/trails/blob/master/app/src/main/java/com/madisp/trails/CaptureService.java
Мне нужно, чтобы получить аудио с микрофона и записать его в кодировке файла в качестве аудио трек. В настоящий момент файл, закодированный с помощью Muxer, имеет только видеодорожку.
я могу получить аудио с MIC без каких-либо проблем, ниже
int nChannels = 1;
int minBufferSize = AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT) * 2;
AudioRecord aRecorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize);
short[] buffer = new short[44100 * nChannels];
aRecorder.startRecording();
int readSize = 0;
while (recording) {
readSize = aRecorder.read(buffer, 0, minBufferSize);
if (readSize < 0) {
break;
} else if (readSize > 0) {
// do stuff with buffer
}
}
aRecorder.stop();
aRecorder.release();
, но я не уверен, как включить его, чтобы (https://github.com/madisp/trails/blob/master/app/src/main/java/com/madisp/trails/CaptureService.java)
while (running) {
int index = avc.dequeueOutputBuffer(info, 10000);
if (index == MediaCodec.INFO_OUTPUT_FORMAT_CHANGED) {
if (track != -1) {
throw new RuntimeException("format changed twice");
}
track = muxer.addTrack(avc.getOutputFormat());
muxer.start();
} else if (index >= 0) {
if ((info.flags & MediaCodec.BUFFER_FLAG_CODEC_CONFIG) != 0) {
// ignore codec config
info.size = 0;
}
if (track != -1) {
ByteBuffer out = avc.getOutputBuffer(index);
out.position(info.offset);
out.limit(info.offset + info.size);
muxer.writeSampleData(track, out, info);
avc.releaseOutputBuffer(index, false);
}
}
}
И да, понимаю я буквально просить для вас, чтобы написать код, но я не имею экспертных знаний по этому вопросу
Любая помощь по оценке
Благодаря
@fadden Вы можете помочь? – nLL