
Android系统多媒体工程师系列
文章平均质量分 64
适合Android系统多媒体工程师进阶,会持续更新项目中编解码实战,特别是Android MediaCodec底层原理,涉及Codec编解码部分,主要讲解RK3399 Mali- V550编解码芯片等
Android系统攻城狮
《Android系统多媒体进阶实战》一书作者
展开
-
Android15音频进阶之MediaRecorder支持通道数(一百零五)
本篇目的:Android15音频进阶之MediaRecorder支持通道数。原创 2025-01-27 08:00:00 · 1603 阅读 · 0 评论 -
Android音频进阶之时钟脉冲(一百)
本篇目的:Android音频进阶之时钟脉冲需求:I2S中的时钟信号到底是什么?有着怎样的作用?在数据通信时序中,时钟信号有着重要作用。I2S 是一种主从同步接口,通常由一个设备充当主设备(Master),另一个设备为从设备(Slave)。时钟线(SCK/Bit Clock, BCLK)提供数据传输的位时钟,确保数据的同步。字选择线(WS, Word Select)WS = 0:左声道数据WS = 1:右声道数据数据线(SD, Serial Data)用于传输音频数据流。原创 2024-12-23 08:45:00 · 1709 阅读 · 0 评论 -
Android12之MediaCodec硬编解码调试手段(四十九)
本篇目的:Android12之打开MediaCodec硬编解码日志。编解码器类型:MediaCodec支持一系列的音频和视频编解码器,包括H.264、H.265、AAC、MP3等流行的编码和解码格式。开发者可以通过MediaCodec来进行音视频数据的编码和解码操作。硬件加速:MediaCodec可以利用Android设备的硬件编解码器来加速音视频处理,提高性能和节约电力。通过MediaCodec,开发者可以利用设备本身的硬件资源来进行多媒体编解码操作,从而实现更加高效的处理。原创 2023-12-04 10:58:21 · 638 阅读 · 0 评论 -
Android12之H264、H265、H266视频编码标准总结(四十八)
本篇目的:理解NuMediaExtractor::setDataSource过程创建匿名共享内存过程。原创 2023-10-05 10:53:07 · 535 阅读 · 0 评论 -
Android12之解封装NuMediaExtractor::setDataSource过程(四十七)
本篇目的:理解sp::make(sp::fromExisting(this), heap(), offset, size)创建过程。原创 2023-09-25 01:12:51 · 333 阅读 · 0 评论 -
Android12之仿Codec2.0实现传递编解码器组件本质(四十六)
本篇目的:理解Codec2.0创建Codec2.0实现传递编解码器组件本质,将本质逻辑提取出来,便于开发者学习与理解Codec2.0源码。原创 2023-09-22 18:22:28 · 426 阅读 · 0 评论 -
Android12之Codec2.0配置编解码器为H264实现(四十五)
本篇目的:理解Android12之Codec2.0配置编解码器编码为H264格式。原来Configurable是Codec2ConfigurableClient类的别名。根据提示:找C2ComponentInterface继承ConfigurableC2Intf的类。原创 2023-09-21 23:37:14 · 851 阅读 · 0 评论 -
Android之AMessage机制存/取原理(四十四)
本篇目的:理解Android之AMessage消息机制实现与存储原理。Android的AMessage消息机制是Android系统中用于处理线程间通信的一种实现方式。下面是AMessage消息机制的实现原理:消息的创建和发送:每个消息都是由AMessage类表示的,可以通过AMessage的构造函数创建消息对象,并设置消息的内容和标识符。消息可以通过Handler类的sendMessage方法发送到目标线程的消息队列中。消息的接收和处理:每个线程都有一个与之关联的消息队列,用于接收和处理消息。原创 2023-09-21 14:00:26 · 472 阅读 · 0 评论 -
Android之MediaCodec::PostAndAwaitResponse消息原理(四十三)
本篇目的:理解Android之MediaCodec::PostAndAwaitResponse消息原理。原创 2023-09-19 23:51:58 · 421 阅读 · 0 评论 -
Android之MediaMetricsService实现本质(四十二)
本篇目的:将MediaMetricsService类实现抽出来,看到其本质。原创 2023-09-17 22:20:05 · 759 阅读 · 1 评论 -
常见音视频、流媒体开源编解码库及官网(四十一)
本篇目的:常见音频、视频、流媒体开源编解码库。原创 2023-09-14 20:53:28 · 971 阅读 · 0 评论 -
Android MeidiaCodec之OMXPluginBase与QComOMXPlugin实现本质(四十)
本篇目的:将OMXPluginBase和QComOMXPlugin类实现抽出来,看到其本质。原创 2023-09-09 01:32:53 · 401 阅读 · 0 评论 -
ISO/IEC/ITU标准如何快速查找(三十九)
本篇目的:涉及到IEC、ISO、ITU组织标准体系,开发者往往很晕,大部分标准的文档是要收费的,比如ISO/IEC 13818或ISO/IEC 14496,如何能够快速找到哪个体系的哪个标准?这是本篇的目的。原创 2023-09-03 20:19:03 · 760 阅读 · 0 评论 -
ISO/IEC标准之Mpeg-1到Mpeg21对应哪些ISO/IEC标准(三十八)
本篇目的:ISO/IEC标准之Mpeg-1到Mpeg21对应哪些ISO/IEC标准。原创 2023-09-03 19:57:45 · 694 阅读 · 0 评论 -
ISO/IEC标准组织介绍(三十七)
本篇目的:ISO/IEC 14496协议标准介绍视频编解码器:定义了用于压缩和解压缩视频数据的编码器和解码器算法,如H.264(也称为AVC)、H.265(也称为HEVC)等。音频编解码器:定义了用于压缩和解压缩音频数据的编码器和解码器算法,如AAC(Advanced Audio Coding)等。媒体格式:定义了用于储存和传输多媒体数据的文件格式,如MP4(MPEG-4 Part 14)、ISO基本媒体文件格式(ISOBMFF)等。原创 2023-09-03 15:54:52 · 335 阅读 · 0 评论 -
AAC之处理码流分析工具(三十六)
本篇目的:计算H264中每一帧数据的大小。faac是一个用于编码AAC音频文件的命令行工具faad则是用于解码AAC音频文件的命令行工具。它们都是开源的,并且在Linux平台上得到了广泛支持。原创 2023-09-02 23:28:09 · 719 阅读 · 0 评论 -
Android之计算H264每一帧的大小(三十五)
本篇目的:计算H264中每一帧数据的大小。原创 2023-08-29 03:00:33 · 305 阅读 · 0 评论 -
Android12之ABuffer数据处理(三十四)
本篇目的:在调试过程中,发现ABuffer如果获取字符串data()为不可见字符,但是还有长度size()大于0,这时候data()不为空,写入到文件也是乱码,所以需要转16进制看下。原创 2023-08-25 00:04:01 · 964 阅读 · 0 评论 -
Android12之MediaCodec用法套路(三十四)
本篇目的:理解Android12之MediaCodec基本使用套路。原创 2023-08-13 21:09:26 · 362 阅读 · 0 评论 -
Android12之NV21/NV12/YV12编码格式及GPU渲染NV21(三十三)
本篇目的:理解YUV之NV12、NV21、YV12采样格式。原创 2023-07-20 16:59:50 · 579 阅读 · 0 评论 -
Android12之Codec2 KEY_PREPEND_HEADER_TO_SYNC_FRAMES(三十二)
【代码】Android12之Codec2 KEY_PREPEND_HEADER_TO_SYNC_FRAMES(三十二)原创 2022-11-13 21:43:23 · 653 阅读 · 0 评论 -
Build mp4info for Ubuntu(三十一)
Linux平台没有解析mp4文件工具,自己编译一个mp4info,共享一个编译方法.原创 2022-11-11 00:07:58 · 266 阅读 · 0 评论 -
秒懂色彩位数:8bit、10bit、12bit(三十)
如果R、G、B每个通道占12位,则一个通道2^12=4096个灰度,则三个通道色彩总数是4096x4096x4096 = 68719476736.色彩总数:4096x4096x4096 = 68719476736 = 600亿种色彩。原创 2022-11-03 17:39:11 · 5582 阅读 · 0 评论 -
秒懂YUV444/YUV422/YUV420计算(二十九)
YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的则是色度(Chrominance或Chroma)。YUV计算公式简介表示水平方向上的相对采样率.表示奇数行和偶数行里Y样本个数.表示奇数行里U和V的样本个数.表示偶数行里U和V的样本个数.原创 2022-09-27 00:31:08 · 1647 阅读 · 0 评论 -
Android12之MediaCodec参数(二十八)
Android12之MediaCodec参数(二十八)原创 2022-09-22 19:10:58 · 1056 阅读 · 0 评论 -
Android10之Video MediaCodec硬解码流程(二十七)
Android10之Video MediaCodec硬解码流程原创 2022-07-28 18:04:43 · 1064 阅读 · 0 评论 -
Android10以上Codec2框架解码流程(二十六)
Android10支持Codec2,Android12后OMX框架将弃用。1.相比于ACodec+OMX的中间件框架,Codec 2.0将具备若干特性:组件连通(component chaining),过滤器(filters),配置可查询(configureation querying)。插件化。2.在性能上,相比于ACodec+OMX框架,Codec 2.0的解码组件与编码组件所依赖的Buffer管理机制具备零拷贝特性,避免大块数据的拷贝所引起的性能降低。.....................原创 2022-07-18 17:57:13 · 2566 阅读 · 7 评论 -
视频倒放原理实现(二十五)
第一种方式1.视频<1>.从第一个gop然后顺序解码<2>.将一个解码的gop的yuv写入文件中<3>.将第二个gop顺序解码yuv写入文件 第三个gop序列,以此类推....<4>.然后倒序读入内存中,进行编码即可.缺点:如果文件过大,不能使用此方法,因为yuv文件较大,一分钟yuv就有1-2G左右,有可能撑爆sdcard.2.音频部分解码后的pcm数据,顺序写入队列中缓存队列中,输出pcm数据采样率与.原创 2021-07-30 17:40:18 · 1671 阅读 · 0 评论 -
Android8.1之MediaCodec编码器support类型(二十四)
1.frameworks/av/media/libmedia/MediaDefs.cpp#include <media/MediaDefs.h>namespace android {const char *MEDIA_MIMETYPE_IMAGE_JPEG = "image/jpeg";const char *MEDIA_MIMETYPE_VIDEO_VP8 = "video/x-vnd.on2.vp8";const char *MEDIA_MIMETYPE_VIDEO_VP9.原创 2021-05-26 21:23:16 · 470 阅读 · 0 评论 -
Android7.x之MediaServer支持sdcard_rw读写(二十三)
1.Android具有system权限为什么不可以访问SDcard?官方文档中找到如下解释:Processes that continue holding open fds on the sdcard a little after it isrequested to be unmounted will be killed so that it can unmount.We don't want the system process to be able to access the sdcard..原创 2021-04-13 16:43:53 · 645 阅读 · 0 评论 -
OpenMax之FillBufferDone与OnFillBufferDone(二十二)
1.结构体定义及注册回调frameworks/native/include/media/openmax/OMX_Core.htypedef struct OMX_CALLBACKTYPE{OMX_ERRORTYPE (*FillBufferDone)( OMX_OUT OMX_HANDLETYPE hComponent, OMX_OUT OMX_PTR pAppData, OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer).原创 2021-04-10 19:45:15 · 676 阅读 · 0 评论 -
OMX Codec结构体分析(二十一)
1.栗子OMX_PARAM_PORTDEFINITIONTYPE def;InitOMXParams(&def);def.nPortIndex = kPortIndexOutput;//获取Codec参数mOMX->getParameter(mNode, OMX_IndexParamPortDefinition, &def, sizeof(def));//设置Codec参数mOMX->setParameter(mNode, OMX_IndexParamPortD.原创 2021-04-09 16:04:59 · 392 阅读 · 0 评论 -
YUYV和YUY2格式分析(二十)
结论:其实YUYV、YUY2、YUNV是同一种数据格式.原创 2021-03-18 17:08:10 · 2944 阅读 · 0 评论 -
PTS与DTS显示及解码顺序(十九)
一、1帧、P帧、B帧概念:I帧(Intra coded frames:帧内编码):包含了某个特定的完整图像.P帧(帧间编码):是单向差别帧,依赖于前面的I帧或P帧,表示的是这一帧跟之前I帧(或P帧)的差,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面.B帧(Bi-directional predicted frames:帧间双向时间预测):是双向差别帧,B帧记录的是本帧与前后帧的差别,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终.原创 2021-03-12 11:49:13 · 1113 阅读 · 0 评论 -
FFmpeg集成x265(十八)
一、编译安装libx2651.下载x265 code# git clone https://github.com/videolan/x265.git 2.编译# cd x265-master/build/linux# ./make-Makefiles.bash# make 编译后生成:x265:可以直接使用的编码H.265的命令行程序libx265.so,libx265.lib:可以用于程序开发的编码H.265的类库libx265.a::可以用于程序开发的编码H.265的类库 .原创 2021-03-10 20:05:20 · 543 阅读 · 0 评论 -
Android Camera支持nv12/nv21左右镜像(十七)
#include <stdio.h>#include <stdlib.h>#include <strings.h>#include <string.h>void horizontalMirrorNv21(char *nv21,char *mirrorNv21, int width, int height) { int yLineStartIndex = 0; int uvLineStartIndex = width * height; for.原创 2021-01-18 20:40:55 · 1062 阅读 · 0 评论 -
RK3399封装(CPU+GPU)Mali-T860 Codec架构(十六)
开发者的困惑: 不少Android系统开发者或者多媒体编解码开发者,对与Codec编解码芯片,所处于的位置很是困惑,到底是在GPU?还是在别的DSP芯片里封装。拿RK3399举例,Codec编解码芯片到底在哪?所处理的数据到底怎么给GPU的,下面几张图可以帮你解惑!下图RK3399芯片可以看到:RK3399处理器封装结构:CPU+GPU+ISP处理器+视频(图片)Codec...原创 2021-01-07 18:44:33 · 3413 阅读 · 0 评论 -
Android查看支持硬编解码器(十五)
1.支持的软硬codec/system/etc/media_codecs.xml<MediaCodecs> <Include href="media_codecs_google_audio.xml" /> <Settings> <Setting name="max-video-encoder-input-buffers" value="4" /> <Setting name="supports-mul.原创 2020-08-03 13:54:56 · 2900 阅读 · 0 评论 -
Android对H265和VP9的支持(十四)
Android4.4版本后开始支持VP9Android5.0后支持HEVC(H265)原创 2020-07-09 16:06:37 · 2762 阅读 · 0 评论 -
Android Camera之/dev/video*问题(十三)
# vim /system/bin/isp_init.sh#!/system/bin/shsensor_sd="/sys/devices/0.soc/fa400000.camera/video4linux/v4l-subdev2"test_main() { if [ ! -d "$sensor_sd" ]; then echo 1 > /sys/devices/0.soc/fa400000.camera/isp_init fi}test_main# isp_.原创 2020-09-15 14:05:44 · 2447 阅读 · 0 评论