1.å®å4.oå2.3çåºå«
2.android的码包系统架构
3.FFmpeg学习(一)开篇
å®å4.oå2.3çåºå«
å¯ä»¥å·æºçææºé½å¯ä»¥å·4.0çï¼ä»¥åè¿ææ´é«ççæ¬
èªææ¥ä¸åï¼è°·æå¨é¦æ¸¯æ£å¼åå¸ä»£å·ä¸ºâå°æ·æ·ä¸ææ²»âçæ°ä¸ä»£Andriod 4.0ç³»ç»å°æåºæºä»£ç çé«è°å ¬å¸ï¼é£ä¹ç¸æ¯Android 2.3é½æé£äºæ¹è¿å¢ï¼Android 4.0å¨ç³»ç»ä¸ç9大æ¹è¿ï¼
1.æ°çUIçé¢æ´å ç人æ§å
ç¸ä¿¡å ³æ³¨å®åç³»ç»çæåé½çè¿äºæ©äºæ¶åç½ä¸åå¸çAndroid4 .0ç³»ç»çé¢ãè¿æ¬¡ççåå¸ä¼ä¸çç §çå§ã
2.æ°çéç¥ç³»ç»
Android 4.0çéç¥ç³»ç»æäºå¾å¤§çæ¹è¿ï¼ç¨æ·å¯ä»¥èªå·±å³å®åªäºåºç¨å¯ä»¥åééç¥ã
Android 4.0çéç¥ç³»ç»ç°å¨å¯ä»¥ç´æ¥å侧é¢æ»å¨å å»éç¥æ¡ç®ï¼è¿æ ·çæä½ä¹åºç°å¨åºç¨ç®¡çå表ä¸ã
3.è¯é³è¾å ¥ç³»ç»åé¢é¨è¯å«åè½
Duarte说æ°ç³»ç»çé®çå¨çº éã精度æ¹é¢æäºå¾å¤§æ¹è¿ãä»è¿æ¼ç¤ºäºè¯é³è¾å ¥ç³»ç»ï¼è¯´âsmiley faceâç´æ¥å¨è¾å ¥æ¡ä¸æå ¥ä¸ä¸ªç¬è¸ã
face unlockç°åºæ¼ç¤ºå¤±è´¥äº...(è«éå 为人太é¾çäº?...)
4.æ°çå®åæµè§å¨
Android 4.0çæµè§å¨ç°å¨ç´æ¥æ¯æå°å®æ´ç½é¡µç¦»çº¿ä¿åãæ¯ç¬¬ä¸æ¹åºç¨æ´å¥½çæ¯è¯¥åè½ç°å¨ä¸é»è®¤æµè§å¨å®å ¨éæãå®ç°å®æ¶é¢è§åè½ï¼åä¸æå¿å ³éæææµè§å¨æ ç¾ï¼å¿«é访é®å°å¼æºçç½ç«ãè½å¤èªå¨ä¸Chromeæµè§å¨å®ç°æ°æ®åæ¥ã
5.å¤§å¹ å¼ºåäºGMail
Android 4.0çGmailå¤§å¹ å¼ºåï¼æµè§é®ä»¶æ¶å·¦å³æ»å¨ç´æ¥åæ¢ä¸ä¸å°/ä¸ä¸å°é®ä»¶ãåæ¶å¢å äºç¦»çº¿æç´¢åè½ï¼å¯è®¿é®è¿å»å¤©å æ¶å°çé®ä»¶ãæ°ç GMail çé¢ï¼å®å ¨éæä¼è¯æ¨¡å¼ï¼å¤§å¹ 强åäºGMailã
6.æ°æ®ä½¿ç¨ç®¡çåè½
Android 4.0éæçæ°æ®è¿½è¸ªç³»ç»å¯ä»¥è¿½è¸ªãåæ移å¨æ°æ®æµéï¼è®¾ç½®ç§»å¨æ°æ®ä½¿ç¨ä¸éï¼å®éæäºç³»ç»å é¨ï¼åè½é常é½å ¨ï¼ç¬¬ä¸æ¹çæ°æ®æµé管çå·¥å ·åéå ªå¿§ã
æ¯ææ»æ¯ææµéè¶ è¿çæåè¿åä¸ç¨æ å¿äºï¼æµé管çå·¥å ·è¿è½å ·ä½æ¥çæ¯ä¸ªåºç¨äº§ççæµéã
7.æç §æ¨¡å¼ç强å
Android 4.0ææç §çåªéä¸æ¬¡ç¹å»å°±è½å享å°G+ãFacebookãTwitterçä»»æSNSæå¡ï¼å¦æå½è¡å¼å ¥çè¯è¯å®ä¼å¢å 人人ç½ï¼æ°æµªå¾®åçå享ã
Android 4.0æ°çç §çåºç¨ç°å¨å¯ä»¥åInstagramä¸æ ·å 滤éï¼å¹¶ä¸è¿è½å ç¸æ¡ãè¿è¡å ¨æ¯ææã并ä¸ç¸æºå¯ä»¥è¯å«äººè¸ï¼éæ Zero Shutter ææ¯ï¼å¿«é¨ååºæå¿«ï¼è¿æå¾å¿«ã
8.æ°å å ¥çpeopleåºç¨
Peopleåºç¨æ¯é讯å½çè¿åï¼ä»¥èç³»äººç §çä¸ºæ ¸å¿ï¼çé¢åéæ»å¨èéç¹å»ã
Peopleåºç¨éæäºå ¶å®éä¿¡å·¥å ·ï¼æ¯å¦TwitterãLinkedinãGoogle+ï¼ä¸åºæå¤çè¯è¿ä¼æ¯æèªå·±æ·»å 第ä¸æ¹æå¡ã
peopleåºç¨ä¸Gmailæ´åï¼ç¹å»é®ä»¶éç头åå°±è½å¼¹åºéæå¤§ç §ççå¿«æ·èç³»æ¹å¼ï¼éè¿Gmailãä¿¡æ¯ã第ä¸æ¹æå¡å¿«éè系对æ¹ã
9.Android Beamåºç¨
Android Beamæ¯åºäºNFCçå享æ¹å¼ï¼ä¸¤é¨æ¯æNFCçAndroidææºèé è碰ä¸ä¸å°±è½å享æºä¸å 容ã该åè½è¿ä¼å第ä¸æ¹å¼æ¾ã
.å ¶ä»ä¸äºåè½
Android 4.0å¯ä»¥éè¿é¿æçµæºé®åé³éé®æªå¾ï¼ä¸åéè¦å ¶å®è½¯ä»¶ã
å å ¥æ°åâRobotoâåä½ï¼éç¨äºé«æ¸ æ¾ç¤ºå±ï¼å®æ¶å¢çº¸åè½ã
android的系统架构
android系统架构分从下往上为linux 内核层、运行库、源码应用程序框架层、下载和应用程序层
linuxkernel:负责硬件的码包驱动程序、网络、源码电源、下载配音 源码系统安全以及内存管理等功能。码包
libraries和 androidruntime:libraries:即c/c++函数库部分,源码大多数都是下载开放源代码的函数库,例如webkit,码包该函数库负责 android网页浏览器的源码运行,例如标准的下载c函数库libc、openssl、码包sqlite等,源码当然也包括支持游戏开发2dsgl和 3dopengles,下载在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,例如mpeg4、源码下载视频h.、mp3、 aac、amr、jpg和png等众多的多媒体文件格式。android的runtime负责解释和执行生成的dalvik格式的字节码。
applicationframework(应用软件架构),java应用程序开发人员主要是使用该层封装好的api进行快速开发。
applications:该层是java的应用程序层,android内置的googlemaps、e-mail、即时通信工具、浏览器、mp3播放 器等处于该层,java开发人员开发的程序也处于该层,而且和内置的vr指标源码应用程序具有平等的位置,可以调用内置的应用程序,也可以替换内置的应用程序。
上面的四个层次,下层为上层服务,上层需要下层的支持,调用下层的服务,这种严格分层的方式带来的极大的稳定性、灵活性和可扩展性,使得不同层的开发人员可以按照规范专心特定层的开发。
android应用程序使用框架的api并在框架下运行,这就带来了程序开发的高度一致性,另一方面也告诉我们,要想写出优质高效的程序就必须对整个 applicationframework进行非常深入的理解。精通applicationframework,你就可以真正的理解android的设计 和运行机制,也就更能够驾驭整个应用层的网表源码开发。
FFmpeg学习(一)开篇
为什么要学习FFmpeg?本人希望深入研究音视频领域,音视频领域内容丰富,我计划从多个方面逐步学习:FFmpeg常用功能实践、FFmpeg源码研究、OpenGL、OpenGLES、Metal、AR、WebRTC、直播架构等。
当前音视频有哪些应用场景?从众多应用场景可以看出,音视频技术至关重要,尤其在5G时代,网络传输问题得到极大提升,音视频需求将爆发式增长。以下是微喵源码一个简单播放器架构图:
音频解码和视频解码一般使用FFmpeg解码,iOS8之后提供了VideoToolBox框架支持硬解码。视频渲染通常使用OpenGL直接利用GPU渲染,还有GPUImage、SDL、VLC等第三方框架。
音视频播放中的音视频同步是一项复杂的技术。学习一项技术需要高效的方法,只有不断实践才能深刻理解。学习FFmpeg也需要好的文档,以下列举一些必备的学习文档地址:
以上都是英文文档,如果英文学习困难,可以参考以下中文资料:
此外,推荐两本非常好的书籍:
相关学习资料推荐,点击下方链接免费报名,先码住不迷路~
1. FFmpeg简介:FFmpeg是一套用于记录、转换数字音频、视频并将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。FFmpeg在Linux平台下开发,但也可以在其他操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,年至年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。
2. FFmpeg能做什么
3. FFmpeg架构模块组成:我们先看一张FFmpeg的架构图:
下载好的源码,我们也可以看到大致的源码结构:
3.1 libavutil
3.2 libavformat
FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在AVFormat中增加自己的封装处理模块。
3.3 libavcodec
AVCodec中实现了目前多媒体绝大多数的编解码格式,既支持编码,也支持解码。AVCodec除了支持MPEG4、AAC、MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.(AVC)编码,需要使用x编码器;H.(HEVC)编码,需要使用x编码器;MP3(mp3lame)编码,需要使用libmp3lame编码器。如果希望增加自己的编码格式或硬件编解码,则需要在AVCodec中增加相应的编解码模块。
3.4 libavfilter
3.5 libavdevice
3.6 libswscale
3.7 libpostproc
3.8 libswrressample
3.9 ffmpeg
3. ffsever
3. ffplay
4. FFmpeg安装:下载源码后,我们可以查看一下目录结构:
输入./configure --help命令查看配置信息
内容太多需要分页,输入./configure --help | more
从上面的帮助,我们可以尝试输入:./configure --list-decoders查看所有解码器
接下来我们可以尝试输入:./configure --list-encoders查看所有编码器
接下来我们可以尝试输入:./configure --list-filters查看所有滤镜器
接下来我们可以尝试输入:./configure --list-muxers查看FFmpeg的封装,封装Muxing是指将压缩后的编码封装到一个容器格式中,我们输入./configure --list-muxers来查看FFmpeg支持哪些容器格式:
从上面打印信息来看,FFmpeg支持生成裸流文件,如H.、AAC、PCM,也支持一些常见的格式,如MP3、MP4、FLV、M3U8、WEBM等。
从上面解封装又称为解复用格式的支持信息中可以看到,FFmpeg支持的demuxter非常多,包含image、MP3、FLV、MP4、MOV、AVI等。
从支持的协议列表中可以看到,FFmpeg支持的流媒体协议比较多,包括MMS、HTTP、HTTPS、HLS、RTMP、RTP,甚至支持TCP、UDP,它还支持使用file协议的本地文件操作和使用concat协议支持的多个文件串流操作。
接下来我们可以尝试输入:./configure --list-parsers查看FFmpeg支持的解析器
接下来我们可以尝试输入:./configure --list-bsfs查看FFmpeg支持的字节流过滤器
接下来我们可以尝试输入:./configure --list-indevs查看有效的输入设备
接下来我们可以尝试输入:./configure --list-outdevs查看有效的输出设备