현재 Camera2를 통해서 나온 버퍼를 MediaMuxer에 기록하는데 성공했습니다. 그런데 같은 방식으로 오디오를 어떻게 해야 할지 감이 안잡힙니다.
videoCodec!!.setCallback(object : MediaCodec.Callback() {
override fun onInputBufferAvailable(mediaCodec: MediaCodec, index: Int) {
Log.d(TAG, "video input buffer")
}
override fun onOutputBufferAvailable(mediaCodec: MediaCodec, index: Int, bufferInfo: MediaCodec.BufferInfo) {
//Log.d(TAG, "video output buffer $index")
if (isRecording) {
val outputBuffer = mediaCodec.getOutputBuffer(index)
if (outputBuffer != null) {
if (outputBuffer.hasRemaining()) {
mediaMuxer?.writeSampleData(videoTrackIndex, outputBuffer, bufferInfo)
}
}
}
mediaCodec.releaseOutputBuffer(index, false)
}
override fun onError(mediaCodec: MediaCodec, exception: MediaCodec.CodecException) {
Log.e(TAG, "video codec error", exception)
}
override fun onOutputFormatChanged(mediaCodec: MediaCodec, mediaFormat: MediaFormat) {
if (mediaMuxer != null) {
videoTrackIndex = mediaMuxer!!.addTrack(mediaFormat)
mediaMuxer!!.start()
}
}
})
이런 식으로 오디오도 MediaCodec의 콜백으로 받게 만들고 싶습니다.