android音视频开发一安卓常用API

android音视频开发一安卓常用API,第1张

Android SDK 提供了两套音频采集的API,分别是:MediaRecorder 和 AudioRecord,前者是一个更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP3等)并存成文件,而后者则更接近底层,能够更加自由灵活地控制,可以得到原始的一帧帧PCM音频数据。如果想简单地做一个录音机,录制成音频文件,则推荐使用 MediaRecorder,而如果需要对音频做进一步的算法处理、或者采用第三方的编码库进行压缩、以及网络传输等应用,则建议使用 AudioRecord,其实 MediaRecorder 底层也是调用了 AudioRecord 与 Android Framework 层的 AudioFlinger 进行交互的。直播中实时采集音频自然是要用AudioRecord了。

21 播放声音可以用MediaPlayer和AudioTrack,两者都提供了Java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。

22 其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。而AudioTrack只能播放已经解码的PCM流,如果对比支持的文件格式的话则是AudioTrack只支持wav格式的音频文件,因为wav格式的音频文件大部分都是PCM流。AudioTrack不创建解码器,所以只能播放不需要解码的wav文件。

23 MediaPlayer在framework层还是会创建AudioTrack,把解码后的PCM数流传递给AudioTrack,AudioTrack再传递给AudioFlinger进行混音,然后才传递给硬件播放,所以是MediaPlayer包含了AudioTrack。

24 在接触Android音频播放API的时候,发现SoundPool也可以用于播放音频。下面是三者的使用场景:MediaPlayer 更加适合在后台长时间播放本地音乐文件或者在线的流式资源; SoundPool 则适合播放比较短的音频片段,比如游戏声音、按键声、铃声片段等等,它可以同时播放多个音频; 而 AudioTrack 则更接近底层,提供了非常强大的控制能力,支持低延迟播放,适合流媒体和VoIP语音电话等场景。

使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView、TextureView 来预览 Camera 数据,取到 NV21 的数据回调。

41 一个音视频文件是由音频和视频组成的,我们可以通过MediaExtractor、MediaMuxer把音频或视频给单独抽取出来,抽取出来的音频和视频能单独播放; 

42 MediaMuxer的作用是生成音频或视频文件;还可以把音频与视频混合成一个音视频文件。

文献资料  >

今日应内部团队需求,要实时朗读语音。在这个场景驱动,快速过了一遍官方文档。通过此笔记,摘录自己的思考和理解的内容,方便日后快速回忆。

所以说这是一个偏个人的笔记,对于需要全面了解TTS的看官,可能要失望了。

「androidspeech」 包不在我这次要了解的范围内,后续会补上相关笔记。

「androidspeechtts」 包的tts是「Text To Speech」缩写,文字转语音。

为了开发者便于使用,在AOSP中,关于「兼容性定义文档」的说明,要求每个Android OS版本发行都要兼容的功能实现,其中「TTS」就是以一个Framework的形式存在,开发者通过已有的API,与这个Framework服务进行交互动作。

以一个简单的使用常见为例:播放一句话,简单列出涉及到的相关API。

上述是一次理想的流程,在实际场景中,可能会遇到各种情况,例如文字识别失败、网络识别的网络失败、framework服务内部失败、音频流输出失败等情况,API都有相关的常量值可供识别使用。

另外 TextToSpeechEngine 类,不是一个真正的“引擎”,它只定义了与Framework交互使用到常量:Activity Action、Broadcast Action、Intent、Bundle Key值等,所以这个命名一度令我不知所措。

Framework本身还支持开发者通过ACTION,调用:检查是否可用的语言包、是否有Framework存在、检查目标语言的语言包是否已安装、发起安装语言包指令。

通过简单的封装,配合WebView的Js Interface,让H5前端项目的同事能调用Android的TTS进行朗读。然而事情没有那么简单,因为使用的设备是小米电视4,根本就没有TTS Framework,只能使用第三方语音识别SDK解决,例如科大讯飞的。

Anyway,借机了解这块API,也是有所收获。

以上就是关于android音视频开发一安卓常用API全部的内容,包括:android音视频开发一安卓常用API、有什么能进行即时语音对讲的安卓手机软件、免费的、Android TTS API笔记等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9680345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存