Android mtk单路录音问题
在单路录音中,有两种情况导致底层录音资源被占用的问题:
1 开启vmLog后,拨打一个电话,挂断电话。如果挂断电话后,没有关闭vmlog进程,则会导致其它AP 无法得到底层的录音资源,从而无法录音。
2 打开第三方录音软件,第三方录音软件在后台getinput,一直占用底层资源,不释放的情况话,则会导致其它AP 无法得到底层的录音资源,从而无法录音。
当第三方录音软件退出后,由于后台一直占用底层资源,没有释放mic source,也会导致其它AP 无法得到底层的录音资源,从而无法录音。
当第三方录音软件退出前,把它得到的getinput交给别的AP,没有释放mic source,也会导致其它AP 无法得到底层的录音资源,即使重启手机也无法录音。
当第三方录音软件退出后,重启手机,第三方录音软件的后台自动运行,然后会getinput source的动作,这样后台会一直占用input source,也会导致其它AP 无法得到底层的录音资源,即使重启手机也无法录音。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目前mtk的75,15,77,17平台硬件上只支持单路录音,不支持多路录音,后续89平台在这块已经做了改进,多路录音需要硬件支持,后续更高阶的平台是可以支持多路录音的。
PDXXXX是mtk77平台,硬件上只支持单路录音,不支持多路录音。
开发分析是因为使用第三方微信的时候,一直占用底层的录音资源,没有释放资源造成的。(当问题出现后,把微信进程从后台服务中杀掉或卸载掉后,重启手机就会恢复)
建议第三方微信,在不用的时候及时释放底层录音资源,使其他AP及时获得底层录音资源,可以正常录音。
第三方微信被占用的mtklog如下所示:
第三方微信被占用的mtklog:
11-29 09:10:52.891 116 346 D AudioRecord: getInput(): fail retry 0
11-29 09:10:52.891 116 346 D AudioYusuPolicyManager: getDeviceForInputSource()input source 1, device 00040000
11-29 09:10:52.891 116 346 D AudioYusuPolicyManager: getInput() inputSource 1, samplingRate 48000, format 1, channelMask c, acoustics 7
11-29 09:10:52.891 116 346 D AudioStreamHandler: +openInputStream devices = 40000 format = 1 channelCount = 12 samplerate = 48000
11-29 09:10:52.891 116 346 D AudioStreamHandler: openInputStream :: no free stream available
11-29 09:10:52.891 116 346 V AudioFlinger: openInput() openInputStream returned input 0x0, SamplingRate 48000, Format 1, Channels c, status 1098266528
11-29 09:10:52.891 116 346 D AudioYusuPolicyManager: getInput() failed opening input: samplingRate 48000, format 1, channelMask 12
11-29 09:10:52.896 116 346 D AudioRecord: getInput(): fail retry 1
11-29 09:10:52.896 116 346 D AudioYusuPolicyManager: getDeviceForInputSource()input source 1, device 00040000
11-29 09:10:52.896 116 346 D AudioYusuPolicyManager: getInput() inputSource 1, samplingRate 48000, format 1, channelMask c, acoustics 7
11-29 09:10:52.896 116 346 D AudioStreamHandler: +openInputStream devices = 40000 format = 1 channelCount = 12 samplerate = 48000
11-29 09:10:52.896 116 346 D AudioStreamHandler: openInputStream :: no free stream available
11-29 09:10:52.896 116 346 V AudioFlinger: openInput() openInputStream returned input 0x0, SamplingRate 48000, Format 1, Channels c, status 1098266528
11-29 09:10:52.896 116 346 D AudioYusuPolicyManager: getInput() failed opening input: samplingRate 48000, format 1, channelMask 12
11-29 09:10:52.901 116 346 D AudioRecord: getInput(): fail retry 2
11-29 09:10:52.901 116 346 D AudioYusuPolicyManager: getDeviceForInputSource()input source 1, device 00040000
11-29 09:10:52.901 116 346 D AudioYusuPolicyManager: getInput() inputSource 1, samplingRate 48000, format 1, channelMask c, acoustics 7
11-29 09:10:52.901 116 346 D AudioStreamHandler: +openInputStream devices = 40000 format = 1 channelCount = 12 samplerate = 48000
11-29 09:10:52.901 116 346 D AudioStreamHandler: openInputStream :: no free stream available
11-29 09:10:52.901 116 346 V AudioFlinger: openInput() openInputStream returned input 0x0, SamplingRate 48000, Format 1, Channels c, status 1098266528
11-29 09:10:52.901 116 346 D AudioYusuPolicyManager: getInput() failed opening input: samplingRate 48000, format 1, channelMask 12
11-29 09:10:52.901 116 346 E AudioRecord: Could not get audio input for record source 1
11-29 09:10:52.901 116 346 E StagefrightRecorder: audio source is not initialized
11-29 09:10:52.901 116 346 D StagefrightRecorder: start done status=-2147483648
11-29 09:10:52.901 612 612 E MediaRecorder: start failed: -2147483648
11-29 09:10:52.902 612 612 E MediaRecorderWrapper: MediaRecorder start errorjava.lang.RuntimeException: start failed.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目前,PDXXXX是Android4.0平台,对于3gpp格式的录音文件,其编码方式是采用16K采样率,处理数据的比特率128K,双声道。3gpp格式的录音文件,在电脑上播放时,与该播放器的解码器相关。如果此播放器的解码器 支持16K采样率,处理数据的比特率128K,双声道,将可以正常播放,如PotPlayer可以正常播放。用户可以使用支持此编码方式的播放器,像PotPlayer播放器进行播放.
而amr格式的录音文件其编码方式为8K采样率,处理数据的比特率12.2k,单声道,而电脑上的播放器的解码器都是支持此编码方式,所以amr格式的录音文件在电脑和手机上都是可以播放的。
改善方案及临时措施:建议用户使用支持3gpp格式的播放器,如PotPlayer进行播放。同时建议:建议将amr格式的录音文件设置为默认的录音文件,他的编码方式和解码方式在手机和电脑上都是支持的,普遍性比较好。
长期改善措施:建议将amr格式的录音文件设置为默认的录音文件,他的编码方式和解码方式在手机和电脑上都是支持的,普遍性比较好。对于3gpp格式的录音文件,它是专用移动多媒体录音文件,没有amr格式的录音文件通用性强。
目前mtk的75,15,77,17平台硬件上只支持单路录音,不支持多路录音,后续89平台在这块已经做了改进,多路录音需要硬件支持,后续MTK更高阶的平台是可以支持多路录音的。
开启语音唤醒后,它会一直占用底层录音资源(此情况已经和做语音唤醒的吴华琛核实),不释放的情况下,如果是单路录音,则会导致其它AP无法得到底层的录音资源,从而无法录音。
PD1216B是6589平台所以1216B无此现象,PD1224T是17平台所以不可以。
Android mtk单路录音问题的更多相关文章
- Android高薪之路-Android程序员面试宝典
Android高薪之路-Android程序员面试宝典
- Android学习之路——简易版微信为例(一)
这是“Android学习之路”系列文章的开篇,可能会让大家有些失望——这篇文章中我们不介绍简易版微信的实现(不过不是标题党哦,我会在后续博文中一步步实现这个应用程序的).这里主要是和广大园友们聊聊一个 ...
- 小猪的Android入门之路 Day 3 - part 3
小猪的Android入门之路 Day 3 - part 3 各种UI组件的学习 Part 3 本节引言: 在前面两个部分中我们对Android中一些比較经常使用的基本组件进行了一个了解, part 1 ...
- 小猪的Android入门之路 Day 7 part 2
小猪的Android入门之路 Day 7 part 2 Android的数据存储与訪问之--SharedPreferences(保存偏好參数) ---转载请注明出处:coder-pig 本节引言: 在 ...
- 小猪的Android入门之路 day 1
小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显 ...
- 小猪的Android入门之路 Day 4 - part 1
小猪的Android入门之路 Day 4 - part 1 Android事件处理机制之--基于监听的事件处理机制 本节引言: 在開始本个章节前,我们先回想下,如今我们已经知道了android的一些相 ...
- 【Android】20.4 录音
分类:C#.Android.VS2015: 创建日期:2016-03-13 一.简介 利用Android提供的MediaRecorder类可直接录制音频. 1.权限要求 录制音频和视频需要下面的权限: ...
- Mysql优化_ORDER BY和GROUP BY 的优化讲解(单路排序和双路排序)
ORDER BY 子句尽量使用Index方式排序,避免使用FileSort方式排序,尽可能在索引列上外城排序操作,遵照索引键的最佳左前缀.如果不在索引列上,FileSort有两种算法,Mysql就要启 ...
- boost的asio接收单路大数据量udp包的方法
开发windows客户端接收RTP视频流,当h264视频达到1080P 60fps的时候,按包来调用recvfrom的函数压力比较大,存在丢包的问题,windows的完成端口的性能效果当然可以解决这个 ...
随机推荐
- 随堂练习——Rational rose
管理员 学生
- Java原来如此-遍历Map的三种方法
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; pub ...
- Shell重定向&>file、2>&1、1>&2的区别
shell上: 0表示标准输入 1表示标准输出 2表示标准错误输出 > 默认为标准输出重定向,与 1> 相同 2>&1 意思是把 标准错误输出 重定向到 标准输出. & ...
- awk多文件操作
awk 多文件操作2种实现方法 我们经常会将2个有关联文本文件进行合并处理.分别从不同文件获取需要的列,然后, 整体输出到一起.awk进行多文件处理时候,常常会遇到2个方面问题,第一个是怎么样合并多个 ...
- 【Matplotlib】 增加图例
相关文档: Legend guide legend() command Legend API 控制图例入口 无参调用 legend() 会自动获取图例 handles 以及相关的 labels.其对应 ...
- ORACLE创建表空间、创建用户、更改用户默认表空间以及授权、查看权限
Oracle创建用户.表空间.导入导出....命令 //创建临时表空间 create temporary tablespace ext_temptempfile 'D:\oracle\product\ ...
- BZOJ2302 [HAOI2011]Problem c
Description 给n个人安排座位,先给每个人一个1~n的编号,设第i个人的编号为ai(不同人的编号可以相同),接着从第一个人开始,大家依次入座,第i个人来了以后尝试坐到ai,如果ai被占据了, ...
- poj 1845 数论综合
题意:求A^B的所有因数的和 mod 9901 sol:一开始毫无思路,因为很多定理都不知道-_-|| 1. 整数的唯一分解定理: 任意正整数都有且只有一种方式写出其素因子的乘积表达式. A=(p1^ ...
- COGS8 备用交换机
备用交换机 ★★ 输入文件:gd.in 输出文件:gd.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间 ...
- jboss7.1.1配置mysql数据源
http://blog.csdn.net/msz1992/article/details/8826754 #1.到http://www.mysql.com/downloads/connector/j/ ...