项目中有语音评论模块,测试的时候发现的一个现象,安卓录制的语音上传后,他们可以播放自己的,iOS 端录制语音上传后也可以上传自己的,两边的录制格式都是 .aac 格式的。但是 iOS 端这边播放不了安卓那边上传的语音,用的AVAudioPlayer。安卓那边也一直找不到原因,最后查阅资料找到了问题,安卓那边录制的时候出了点问题。
刚开始以为是上传文件后缀的问题,因为我们的语音文件是通过阿里云 OSSClient 上传到阿里云那边,然后将阿里云那边的路径再上传到后台的,以为是上传文件后缀的问题,后来发现那个只是文件名,与后缀无关。
需要安卓那边录制语音的时候注意下面的输出格式:
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFile(mVoiceData);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
原因就是 AAC_ADTS设置成了default格式导致的,改成 AAC_ADTS后就解决了。