媒体编解码器

MediaCodec类是用来为低级别的媒体编码和解码的媒体编解码器提供访问。您可以实例化一个MediaCodec类通过调用createEncoderByType()方法来进行对媒体文件进行编码或者调用createDecoderByType()来对媒体文件进行解码。每一个方法都要采取一个MIME类型为你想要编码或者解码的媒体文件类型,例如“video/3gpp”或者“audio/vorbis”。

在MediaCodec实例创建之后,你可以调用configure()方法来指定例如媒体格式或者是否对内容加密的属性。

无论你是对你的媒体文件进行编码还是解码,在你创建MediaCodec实例后的其余进程都是一样的。首先通过getInputBuffers()的方法获得输入ByteBuffer对象的一个数组然后再通过getOutputBuffers()方法来获得一个输出的ByteBuffer的对象数组。

当你准备好进行编码或者解码的时候,调用dequeueInputBuffer()方法来获得这个用来作为媒体文件源码的ByteBuffer(从输入的buffers的数组中)的索引位置。在你使用带有媒体文件源码的ByteBuffer之后,通过调用queueInputBuffer()方法来释放缓存区的所有权。

对输出缓存区也是一样的,调用dequeueOutputBuffer()方法来获得你接收到结果的ByteBuffer的索引位置。在你从ByteBuffer读出输出之后,通过调用releaseOutputBuffer()方法来释放所有权。

你可以结合MediaCrypto APIs,而不是正常的queueInputBuffer()方法,通过调用queueSecureInputBuffer()的方法来处理媒体媒体编解码器的加密数据。

想要了解更多关于如何使用编解码器的信息,参见MediaCodec文档。

自定义录音

新方法startRecording()允许你可以在MediaSyncEvent的定义提示下的基础上开始录音。这个MediaSyncEvent指定一个当完成时就能自发触动录音机开始录音的音频对话(例如一个被MediaPlayer所定义的对话)。例如,您可以使用这个功能播放提示音来表示一段录音会话的开始,然后这个录音就自动开始,所以你没不必手动同步提示音和录音开始的操作。

定时文本轨道

MediaPlayer这个类现在可以处理带内和带外的文本轨道。带内文本轨道就是一个MP4或3GPP的媒体源的文本轨道。带外文本轨道可以通过addTimedTextSource()这个方法来本当作一个外部的文本进行添加。在所有的外部文本轨道添加之后,调用getTrackInfo()方法来对数据源中所有的可用的轨迹的列表进行刷新。

如果要用MediaPlayer这个类来设置轨道,你必须调用selectTrack()这个方法选择你想要设置的轨道的索引位置。

当得知到这个文本轨道准备开始时,实现MediaPlayer.OnTimedTextListener这个接口并且把它传到setOnTimedTextListener()方法中去。

音频效果

AudioEffect这个类现在支持当捕获到音频时额外的的音频预处理类型:

作为声学回声消除器(AEC)的AcousticEchoCanceler这个类消除了从远程捕捉到音频信号上的信号的作用。

作为自动增益控制(AGC)的AutomaticGainControl这个类自动恢复正常捕获的信号输出。

作为噪声抑制器的(NS)的NoiseSuppressor这个类可以消除被捕获信号的背景噪音。

您可以应用这些利用AudioEffect一个子类的AudioRecord类上的音频捕获预处理效果。

注意:并不能保证所有的设备都能支持这些效果的,所以你应该首先调用在对应音频效果类上的isAvailable()的方法来检测它的可用性。

无缝播放

现在您可以在两个完全独立的MediaPlayer类上执行无缝播放。在您第一个MediaPlayer类执行结束前的任何时间调用setNextMediaPlayer()这个方法,然后Android系统将会在您第一个停止的时候紧接着播放第二个文件。

媒体路由器。这个新的APIs MediaRouter,MediaRouteActionProvider和MediaRouteButton为您在播放文件的地方提供标准的机制和界面供您选择

-------------------------------------------------------------------------

http://blog.csdn.net/dahuaishu2010_/article/details/14103289

Android 媒体编解码器(转)的更多相关文章

  1. Android 媒体存储服务(二)

    Android 媒体存储服务 简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套 ...

  2. Android 媒体存储服务(一)

    Android 媒体存储服务 本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner.MediaProvider以及媒体信息解析等部分),包括如何把 ...

  3. 专题合集:深入Android媒体存储服务

    Android 有一套媒体存储服务,进程名是 android.process.media,主要负责把磁盘中的文件信息保存到数据库当中,供其他 APP 使用以及 MTP 模式使用.这里包含了数据库管理. ...

  4. 深入Android媒体存储服务(二):磁盘扫描流程

    简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套媒体存储服务,进程名是 and ...

  5. android媒体--图库与API层MediaPlayer的交互

    众所周知一个媒体播放器新建的几个步骤: Mediaplayer mp = new MediaPlayer(0 mp.setDatasource(xxx); mp.setDispalyer(xxx); ...

  6. Android——媒体库 相关知识总结贴

    Android媒体库 http://www.apkbus.com/android-19283-1-1.html Android本地图片选择打开媒体库,选择图片 http://www.apkbus.co ...

  7. Android媒体解码MediaCodec MediaExtractor学习

    Android提供了MediaPlayer播放器播放媒体文件,其实MediaPlyer只是对Android Media包下的MediaCodec和MediaExtractor进行了包装,方便使用.但是 ...

  8. Android媒体解码MediaCodec,MediaExtractor

    Android提供了MediaPlayer播放器播放媒体文件,其实MediaPlyer只是对Android Media包下的MediaCodec和MediaExtractor进行了包装,方便使用.但是 ...

  9. Android 媒体键监听以及模拟媒体键盘的实现 demo

    有时我们需要程序模拟按钮或点击,而手机本身又没有,哪么可以采取其它方式 模拟实现,最后再去实际设备去测试(前期一般都拿不到设备): 如上一首,下一首,暂停等,手机上是没有的,但有些设备上是有的,所以我 ...

随机推荐

  1. tyvj 1057 金明的预算方案 背包dp

    P1057 金明的预算方案 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第二道 描述 金明今天很开心,家里购置的新房就要领钥匙了 ...

  2. flask--Wtform

    一.Wtform WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证. 安装:    pip3 install wtform 用途:  1. 用户登录注册       ...

  3. js+css实现简单下拉菜单

    <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...

  4. jar包作用

    hibernate中jar包的作用 (1)hibernate3.jar:Hibernate的核心库,没有什么可说的,必须使用的jar包 (2)cglib-asm.jar:CGLIB库,Hibernat ...

  5. HACMP5.4常用命令

    整理自己在AIX5.3平台上配置HACMP5.4高可用环境时用到的一些命令. 操作系统相关 1. 查看操作系统版本 oslevel -r    查看当前系统最终版本 oslevel -s    查看当 ...

  6. 关于一家大型互联网公司的.NET面试

    上周去了一家大型的互联网公司去面试!四个面试官提的问题整理下!以后会注明答案! 1.关于垃圾回收的过程!GC的过程 其中包含:什么是根,Finalize与Dispose的区别,什么时候用到!IDisp ...

  7. canvas基础学习(四)

    今天逛天猫时,看见优衣库店铺首页有个这个飘雪效果,顿时觉得好酷炫,立马从里面copy代码进行学习. 之前我也做过一些canvas特效,往往在canvas全屏时,canvas下层的div就无法进行dom ...

  8. uva10943(隔板法)

    很裸的隔板法. 引用一下维基上对隔板法的解释: 现在有10个球,要放进3个盒子里 ●●●●●●●●●● 隔2个板子,把10个球被隔开成3个部份 ●|●|●●●●●●●●.●|●●|●●●●●●●.●| ...

  9. 学习动态性能表(18)--v$system_event

    学习动态性能表 第18篇--V$SYSTEM_EVENT  2007.6.13 本视图概括了实例各项事件的等待信息.v$session_wait显示了系统的当前等待项,v$system_event则提 ...

  10. secret CRT 会话光标不闪烁问题

    点击 选项->会话选项 然后在取消即可,就有了闪烁的光标,应该是个bug.