Android mediaRecorder框架简述(二)

news/2024/7/3 23:04:31

这里有个setupVideiEncoder,看来这里应该是对视频编码的地方 根据不同的编码类型来设置不同的参数,这个方法代码有些多直截取部分代码:

来看看关键的一句,这里创建了OMXCodec 然后把创建了的编码器赋值给MediaSource,这里的MediaSource可以看作是OMXCodec的封装,这样编码器的准备工作就已经做好了:


接着我们回到startMPEG4Recording() 方法,可以看到这里在对解码器进行准备之后,建立了metadata,然后调用setupMPEG4MetaData来存储媒体信息到metadata中,最后我们调用MediaWriter的start方法开始进行编码:


这个是setupMPEG4MetaData方法用来存储媒体信息的各项参数:


接下来我们看看mediaWriter的start方法的实现,meidaWriter只是个描述的文件,我们调用的是实现了这个头文件的MPEG4Writer的start方法,这里截取我们关注的代码,这里开启了一个线程并调用了startTracks方法:


startTracks方法中的实现,建立了一个迭代器,不断的调用start方法:


这里的it就是Track类,我们看看Track类,他是MPEG4Writer的内部类:


接着看看Track类中start的实现,这里截取我们感兴趣的代码 原来调用的是MediaSource,我们前面说过MediaSource就是OMXCodec的封装,这下我们知道了前面是用来准备编码器的,这里开始调用编码器开始编码了,也就是说我们从mediaRecorder.java调用了start方法最终调用的就是OMXCodec.cpp的start方法:


转自:https://blog.csdn.net/itachi85/article/details/8278742


http://www.niftyadmin.cn/n/664544.html

相关文章

java ArrayList 实现

关于ArrayList的实现和原理&#xff0c;原文出处&#xff1a;http://www.cnblogs.com/ITtangtang/p/3948555.html 我觉得他写的非常好&#xff0c;真的很好. 做一个记录和总结吧 public class arraylist<E> {/*** 存放集合的元素 * */private transient Object[] eleme…

Android MediaPlayer+Stagefright框架(音频)图解

在android原生的媒体播放器中是由mediaplayerservice来控制媒体播放器的&#xff0c;在mediaplayerservice中创建了mediaplayer,在mediaplayer.java的native方法通过jni调用android_media_mediaplayer.cpp中的方法&#xff0c;接着往下调用mediaplayer.cpp中的方法&#xff0c;…

shell 面试题汇集

利用 top 取某个进程的 CPU 的脚本 : st1\:*{behavior:url(#ieooui) } <!-- /* Font Definitions */ font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; m…

Linq分页查询

//Linq分页查询 int pageIndex Convert.ToInt32(HttpContext.Current.Request["PageIndex"]); int start pageIndex * Parameter.pageSize; int end (pageIndex 1) * Parameter.pageSize; userList userList.Take<UserInfo>(end).Skip<UserInfo>(st…

Stagefright框架解读(—)音视频Playback流程

转载请注明出处&#xff1a;http://blog.csdn.net/itachi85/article/details/7216639 从Android 2.0&#xff0c;Google引进了Stagefright&#xff0c;并在android2.3时用Stagefright在Android中是以shared library的形式存在(libstagefright.so)&#xff0c;其中AwesomePlayer…

面试-双向链表

面试遇到一个题目&#xff0c;写一个双向链表&#xff0c;包括添加&#xff0c;删除&#xff0c;查找和遍历。当时写了一塌糊涂&#xff0c;后来自己都觉得想笑&#xff0c;双向写着写着被我写成了单向不像单向&#xff0c;双向不像双向了&#xff0c;真是不伦不类。之后 我把这…

Java虚拟机(一)结构原理与运行时数据区域

前言 本来计划要写Android内存优化的&#xff0c;觉得有必要在此之前介绍一下Java虚拟机的相关知识&#xff0c;Java虚拟机也并不是三言两语能够介绍完的&#xff0c;因此开了Java虚拟机系列&#xff0c;这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域。 1.Java虚拟…

[美食]台湾夜市空降上海 33元吃到饱

正宗的台湾夜市小吃搬到上海咯&#xff01;一家来自台 湾的自助式餐厅近日在上海长宁区延安西路近虹许路开张。大肠包小肠、蚵仔煎、牛肉面、担仔面、天妇罗、生炒花枝、台湾刨冰、台湾水果……食客在该店试营业 期间只需要花33元&#xff08;下午茶/宵夜价格&#xff09;&…