0%

引言 强烈建议大家先阅读下我之前写的文章“YUV 基础知识”一定会帮助到你。(我可是花了很长很长时间来学习并撰写文章的,都是干货!) 结论 本文较长,考虑到大忙人不少,可能没时间看完全文,因此先说下结论: 结论1:使用 Camera2 时,通过 Image 获取的数据,可以将其组织成 I420 和 NV21 这两种格式。 结论2:MediaCodec 支持传入的 YUV420 格式是 I420 和 NV12(大多数情况)这两种格式(至少我目前遇到的是这两种格式。注意:是 NV12 而非 NV21)。 PS:对摄像头数据进行编码时,目前我是根据设备支持的编码器的类型来判断需要向 MediaCod ...
阅读全文 »

前言 Android 从 5.0(API 21, 2014年发布)开始,Google 已经将原来的 Camera 类废弃了,改用全新设计的功能更加强大的 Camera2,并且开始主推新的格式 YUV420。因此我们有必要先学习下有关 YUV 的基础知识。 Android 5 之前的版本,Camera Preview 支持的格式是包括 NV21, YV12,NV16,默认图像格式是 NV21,官方强烈建议使用 NV21 或 YV12。而对于 Andriod 5 及之后版本,支持全新的 YUV420Flexible 格式,配套 YUV_420_888。 YUV420Flexible 并是一种具体的 ...
阅读全文 »

前言 最近在做的项目需要在两个手机之间应用 TCP 实时传递音频流,为也节省流量还要使用 AAC 进行编解码。因此对 AAC 进行了相关的调查。由于对音频数据进行了 AAC 编码处理,因此在播放声音时,就要用到 AudioTrack。 阅读前提 有“一定” Android 开发经验(至少要独立写过 Android 代码。能独立解释问题。)(这里有吐槽,详见文末) 简单了解 MediaCodec 的使用。 阅读本文您将学到 如何在 Android 设备上录制声音 如何使用 MediaCodec 将 PCM 编码成 AAC 如何使用 MediaCodec 将 AAC 解码成 PCM 如何在 And ...
阅读全文 »

阅读前提 有一定 Android 开发经验,较好的 Android 基础知识 了解常用 Linux 命令 说明 本文涉及到的内容和 Android 版本有很大关系。网上大家能查到的很多是基于 Andorid 6(含)之前的,由于现在 Android 6 的设备市面上已经很少了,所以这里就不详细讲了。本文主要讲解从 Android 7 开始,LMK 的处理机制。 本文只做简要介绍,不做详细分析。 背景 最近在调查 Android Low Memory Killer 原理,以前一直不关心这个问题,因此系统都已经自己处理了。最近的项目使用的手机内存只有 2G,系统是 Android 7.1.2,同时 ...
阅读全文 »

前言 最近在做 Android 云手机项目,以前是用传图片的方式显示远程手机的屏幕内容,优点是实现起来简单,缺点是流量有些大。现在要改成更加优化的方案:播放 H264 视频流。(视频流数据来自服务器,通过 Socket 传递。并没有使用流媒体协议)。因此先学习了一下 H264 的相关知识。 H264 官方文档最新版下载地址。也可以访问备用地址。 基本术语 SPS:序列参数集(Sequence parameter set) PPS:图像参数集(Picture parameter set) NAL:网络抽象层(Network Abstract Layer) I Slice,P Slice,B Sl ...
阅读全文 »

之前学习 UDP 组播(多播)时,需要先了解广播地址,因此又温习了一下相关的基础知识。 注意: 本文讲解的都是和 IPv4 相关的。 前言 IPv4地址 使用32位(4字节)地址,因此地址空间中只有4,294,967,296(2的32次方)个地址。不过,一些地址是为特殊用途所保留的,如专用网络(约1800万个地址)和多播地址(约2.7亿个地址),这减少了可在互联网上路由的地址数量。随着地址不断被分配给最终用户,IPv4地址枯竭问题也在随之产生。基于分类网络、无类别域间路由和网络地址转换的地址结构重构显著地减少了地址枯竭的速度。但在2011年2月3日,在最后5个地址块被分配给5个区域互联网注册管 ...
阅读全文 »

最近需要用到主机探测功能,想通过 UDP 组播来实现,因此学习了下 UDP。 知识库: 由于组播(多播)和广播会用到一些网络相关的基本知识,可以参看我之前写的文章网络基础知识。 UDP(User Datagram Protocol 用户数据报协议) 基本概念 UDP 单播 UDP 组播(多播) UDP 广播 基本概念 以下内容引自维基百科。 用户数据报协议(英语:User Datagram Protocol,缩写:UDP;又称用户数据包协议)是一个简单的面向数据报的通信协议,位于OSI模型的传输层。该协议由David P. Reed在1980年设计且在RFC 768中被规范。典型网络上的众多使 ...
阅读全文 »

阅读前提 需要能成功编译并运行 Android 源码。具体可参考我之前写的另一篇文章:[原创] Ubuntu 18.04 LTS 编译原生 5.1.1 r26_LMY48Y 并刷机 Nexus 6 系统环境 本人系统环境如下: **OS 环境:**Ubuntu 18.04.2 LTS X64 Desktop **内核版本:**Linux version 4.15.0-51-generic (buildd@lgw01-amd64-059) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) 参考文献 Android定制:修改开机启动画面
阅读全文 »

阅读前提 需要能成功编译并运行 Android 源码。具体可参考我之前写的另一篇文章:[原创] Ubuntu 18.04 LTS 编译原生 5.1.1 r26_LMY48Y 并刷机 Nexus 6 系统环境 本人系统环境如下: **OS 环境:**Ubuntu 18.04.2 LTS X64 Desktop **内核版本:**Linux version 4.15.0-51-generic (buildd@lgw01-amd64-059) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) 提取 boot.img 提取 boot.img 需要 split_b ...
阅读全文 »

先说明下本人的软硬件环境: 硬件环境 **OS 环境:**Ubuntu 18.04.2 LTS X64 Desktop **内核版本:**Linux version 4.15.0-51-generic (buildd@lgw01-amd64-059) (gcc version 7.3.0 (Ubuntu 7.3.0-16ubuntu3)) 硬件环境: CPU:Intel® Core™ i7-7700 CPU @ 3.60GHz (四核心八线程) 内存:16G DDR4 2400 MT/s 硬盘:1T 机械硬盘 带宽:联通 300Mbits 编译 Android 的前提 OpenJDK 7 (注 ...
阅读全文 »