美文网首页Android技术汇总
android IM模块-语音-录制篇1

android IM模块-语音-录制篇1

作者: 土肥圆的诺诺 | 来源:发表于2018-09-27 17:26 被阅读61次

    android IM模块-语音-录制篇1
    https://www.jianshu.com/p/5cccb0a9e740
    android IM模块-语音-录制篇2
    https://www.jianshu.com/p/1527e6d4840d
    android IM模块-语音-播放篇1
    https://www.jianshu.com/p/214a433f3f40
    android IM模块-语音-播放篇2
    https://www.jianshu.com/p/66727521e2eb

    现在做安卓IM可以说是软件常用功能,IM模块常用的有语音,视频,地图,消息,位置,文件等
    我们一般选用三方SDK进行完成,我个人觉得用SDK可以,但是最基本的原理和实现代码我们得基本能坐到
    从这篇开始我们从语音开始进行一篇篇详解,(我也是摸索学习,哪里不对请指正)
    android端常用录音API有,AudioRecord 和MediaRecorder,其中MediaRecorder封装较好,可以很简单的就实现录音功能。我们就简单利用MediaRecorder做一个小案例。

    MediaRecorder

    在XML文件中写入权限


    image.png

    在android6.0以上,这两个权限是需要动态权限申请的,我们记得申请动态权限


    获取录音权限
    获取内存卡读写权限

    我们写一个布局,开始录音和停止录音两个按钮


    布局页面

    在主页面里开始写代码,录音完我们需要保存到SD卡里,我们先做一个File路径出来


    录音保存路径

    新建一个MediaRecorder


    iMediaRecorder
    设置相关参数
    配置参数

    开始录音


    开始录音
    停止录音
    停止录音

    运行一下,记住一定要给予权限哦,不然会报错,点击录音,说一段话,然后结束录音,去文件夹查找,
    录音是一个JNI级别的方法只能单线程操作,而且涉及这种耗时操作,肯定需要放在线程里,

    我建议大家在做的录音的时候,使用一个单线程进行操作,

    这里只是简单展示各种常用参数配置,真正开发的时候一定要注意。


    开始录音
    录音完成
    找到录音
    点击播放
    录音播放
    我们一个很简单的录音APP就完成了,好的,大家很好奇我们设置那堆参数是做什么的呢?我把查到的资料放在下面让大家看一看
    大家可以关注一下两篇博客
    https://blog.csdn.net/qq_32175491/article/details/78664821
    https://www.2cto.com/kf/201408/326131.html
    或者视频可以看这位老师的视频
    https://www.imooc.com/learn/739

    MediaRecorder.AudioSource.xxxx

    MediaRecorder.AudioSource.CAMCORDER
    1 设定录音来源于同方向的相机麦克风相同,若相机无内置相机或无法识别,则
    使用预设的麦克风
    2 MediaRecorder.AudioSource.DEFAULT
    默认音频源
    3 MediaRecorder.AudioSource.MIC
    设定录音来源为主麦克风。
    4 MediaRecorder.AudioSource.VOICE_CALL
    设定录音来源为语音拨出的语音与对方说话的声音
    5 MediaRecorder.AudioSource.VOICE_COMMUNICATION
    摄像头旁边的麦克风
    6 MediaRecorder.AudioSource.VOICE_DOWNLINK
    下行声音
    7 MediaRecorder.AudioSource.VOICE_RECOGNITION
    语音识别
    8 MediaRecorder.AudioSource.VOICE_UPLINK
    上行声音

    MediaRecorder.OutputFormat.xxxx

    1 AAC_ADTS:ADTS的全称是Audio Data Transport Stream。是AAC音频的传
    输流格式。是AAC的一种非常常见的传输格式
    2 AMR_NB:编码的是无视频纯声音3gp文件就是amr,他的文件比AAC的小,他的音乐效果没ACC的好
    3 AMR_WB:VMR-WB 是新型可变速率多模式宽带语音编解码器,专为无线
    CDMA 2000标准而设计,目的在于在 50 至 7000 HZ 的频带上进行语音编码,
    采样率为 16 KHZ。VMR-WB 基于 3GPP AMR-WB (G722.2) 编解码器,在每
    秒速率12.65 Kbit 上可实现互操作。
    4 DEFAULT:默认输出
    5 MPEG_4:这将指定录制的文件为mpeg-4格式,可以保护Audio和Video
    6 RAW_AMR:录制原始文件,这只支持音频录制,同时要求音频编码为
    7 AMR_NB
    8 THREE_GPP:录制后文件是一个3gp文件,支持音频和视频录制
    9 WEBM: 编码为VP8/VORBIS的输出格式。

    MediaRecorder.AudioEncoder.xxxx

    1 default:默认值
    2 AAC:高级音频编码,苹果用的就是这种音频格式,开发首选。
    优点:相对于mp3,AAC格式的音质更佳,文件更小。
    不足:AAC属于有损压缩的格式,与时下流行的APE、FLAC等无损格式相比音质
    存在”本质上”的差距。加之,传输速度更快的USB3.0和16G以上大容量MP3正
    在加速普及,也使得AAC头上”小巧”的光环不复存在。
    3 HE_AAC:HE-AAC混合了AAC与SBR技术
    4 AAC_ELD: 低延时的AAC音频编解码器
    5 AMR_NB:编码的是无视频纯声音3gp文件就是amr,他的文件比AAC的小,他的
    音乐效果没ACC的好
    6 AMR_WB:VMR-WB 是新型可变速率多模式宽带语音编解码器,专为无线 CDMA 2000标准而设计,目的在于在 50 至 7000 HZ 的频带上进行语音编码,采样率为 16 KHZ。VMR-WB 基于 3GPP AMR-WB (G722.2) 编解码器,在每秒速率12.65 Kbit 上可实现互操作。
    7 VORBIS:Vorbis是一种新的音频压缩格式,类似于MP3等现有的音乐格式。但有一点不同的是,它是完全免费、开放和没有专利限制的。OGG Vorbis有一个很出众的特点,就是支持多声道,随着它的流行,以后用随身听来听DTS编码的多声道作品将不会是梦想。

    setAudioSamplingRate

    设置所录制的声音的采样率。
    采样频率越高,数据越大,音质越好,常用频率有11.025kHz,22.05kHz,16kHz,37.8kHz,44.1kHz,48kHz,96kHz,192kHz,其中44.1kHz所有安卓机都支持。

    setAudioEncodingBitRate

    设置所录制的声音的编码位率
    码率越大,压缩越小,音质越好
    AAC HE(High Effciency):32kbps-96kbps,码率低,质量一般
    AAC LC( Low Complexity):96kbps-192kbps,平均低码率和高音质
    android IM模块-语音-录制篇2
    https://www.jianshu.com/p/1527e6d4840d

    相关文章

      网友评论

        本文标题:android IM模块-语音-录制篇1

        本文链接:https://www.haomeiwen.com/subject/qdxyoftx.html