最近两个月在搞 Android 音视频相关方面的需求,下面是记录一次音视频开发的实操记录;
最下面有demo;
移动端具体的需求是这个样子的:
录制视频 + 同时语音识别 + 同时人脸识别 + 同时语音合成;视频时长大概是一个小时,不能压缩处理。
OK,需求出来我是崩溃的,Android 原生不支持录制视频的同时去实现语音识别,而 iOS 原生支持,这就加长了 Android 开发周期;其次 Android 麦克风不支持同时两个音频源同时输入音频,也就是说要使用 MediaCodec (编解码器) 和 MediaFormat ;这对于九窍已通八窍的我着实有点难度;
认真分析之后给出了下面几种方案:
方案一:
开一个线程使用 AudioRecord 录制音频流,将音频流拿去解析实现语音识别同时使用 MediaCodec 编码成 AAC 音频格式文件;
另一个线程使用 Camera 录制视频流,拿到视频流去实现人脸识别同时使用 MediaCodec 编码成 H264 格式视频流文件;
最后将 AAC 与 H264 合成为 MP4 格式视频文件;
方案二:
开一个线程使用 AudioRecord 录制音频流,将音频流拿去解析实现语音识别同时使用 MediaCodec 编码成 AAC 音频格式文件;
另一个线程使用 Camera 录制视频流,拿到视频流去实现人脸识别同时使用 MediaCodec 编码成 H264 格式视频流文件;
第三个线程为混合线程,将音视频流分别添加音视频轨道ÿ