
Android Media
Media
小馋喵星人
这个作者很懒,什么都没留下…
展开
-
Android 平台开启硬件解码log
抓取 kernel log:adb rootadb remountadb shell "echo 0x103F > /d/msm_vidc/debug_level"adb shell "echo 0x3f > /d/msm_vidc/fw_level"adb logcat -b kernel > kernel_log.txt抓取 上层 log:adb rootadb remountadb shell setprop vidc.debug.level 7adb shel原创 2020-11-11 17:31:16 · 1091 阅读 · 0 评论 -
【Android 视频硬件编码】在Native层实现MediaCodec H264 编码 Demon - 实现任意Size尺寸图片的编码
【Android 视频硬件编码】在Native层实现MediaCodec H264 编码 Demon - 实现任意Size尺寸图片的编码一、引入编码失败的问题二、失败的原因分析2.1 猜想一,可不可能单纯填02.2 猜想二,编码器对长与宽存存字节对齐(比如4字节对齐等)在前文《【Android 视频硬件编码】在Native层实现MediaCodec H264 编码 Demon》中,我们实现了如何在Native层中对一系列图片进行编码,编码时配置的参数由具体的编码器性能来决定的,因此各机器编码时使用参数可原创 2020-11-02 19:04:46 · 1115 阅读 · 0 评论 -
【Android 视频硬件编码】在Native层实现MediaCodec H264 编码 Demon
【Android 视频硬件编码】在Native层实现MediaCodec H264 编码实例一、完整代码二、Android.mk在前文《【Android 视频硬件编码】screenrecord.cpp 代码中编码流程分析》,我们学习分析了screenrecord 中视频编码相关的流程,本文我们参考它来实现一个 MediaCodec H264 编码实例。好,废话不多说,我们直接进入主题吧!一、完整代码流程比较简单,没啥好说,需要注意:具体的硬件设备支持的format 格式也不同,我调试的机器原创 2020-10-31 11:51:55 · 2928 阅读 · 15 评论 -
【Android 视频硬件编码】screenrecord.cpp 代码中编码流程分析
【安卓硬件编码学习】screenrecord.cpp 代码流程分析一、ScreenRecord.cpp1. Android.mk2. main() 主函数代码二、recordScreen(fileName) 录屏代码分析本文主要学习如何实现在 Native C++层实现硬件编,参考的是 \frameworks\av\cmds\screenrecord\screenrecord.cpp,我们主要关注的是编码相关,其他部分可以先忽略,为方便分析,我会把代码中一些不相干的先删了。好,接下来废话不多说,我们来原创 2020-10-29 11:27:03 · 2053 阅读 · 0 评论 -
【华为 Hicar 音频卡顿】gc 导致音频卡顿问题分析
一、问题描述:180S MCE 车机,有线音频卡顿的问题分析如下:可以看出,车机从手机接收数据时是正常接收的,并未出来延时。卡顿出现在往StreamBuffer写第36257帧数据时,触发了GC Alloc,该回收内存动作耗时40.910ms,接着在 GC 动作结束后,重新写第36257帧数据,导致播放第36257帧数据时出现卡顿。log 分析如下;(附件中 logcat.log.04 )// 从手机接收到第 36257 帧数据07-31 10:27:18.803 4449 1742 D原创 2020-08-06 10:51:59 · 5557 阅读 · 0 评论 -
视频编码之I帧 、P帧、B帧
视频传输原理视频是利用人眼视觉暂留的原理,通过播放一系列的图片,使人眼产生运动的感觉。单纯传输视频画面,视频量非常大,对现有的网络和存储来说是不可接受的。为了能够使视频便于传输和存储,人们发现视频有大量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就大大减少了视频数据的文件,因此有了H.264视频压缩标准。在H.264压缩标准中I帧、P帧、B帧用于表示传输的视频画面。帧...原创 2019-05-31 11:14:17 · 1742 阅读 · 0 评论 -
【FFMPEG】华为新老两手机平台编码的视频,在同一车机上投屏解码时间慢的问题分析
一、问题背景今天上班时,收到华为那边咨询邮件:分别使用华为新平台手机、老平台手机 各一台,在同一台车机上投屏HICAR ,发现同样是H264编码,1920×720的视频数据,新平台手机编码的视频,在车机上解码的时间在 20ms 以内,老平台手机编码的视频,在车机上解码的时间有些帧超过100ms。同步提供了新老平台的 es 流数据。二、分析1. 使用 pplay 播放 ES 流数据命令: ffplay new_platform_fast.es播放 新平台,解码速度快的 es流数据:c原创 2020-05-25 17:44:31 · 1862 阅读 · 0 评论 -
H264基本原理
前言H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的。随着 x264/openh264以及ffmpeg等开源库的推出,大多数使用者无需再对H264的细节做过多的研究,这大降低了人们使用H264的成本。但为了用好H264,我们还是要对H264的基本原理弄清楚才行。今天我们就来看看H264的基本原理。H264概述H264压缩技术主要采用了以下几种方法对视频数据进行压...转载 2019-06-10 14:37:53 · 2550 阅读 · 0 评论 -
Android Multimedia Codecs - H264编解码分析
目录(一)、从零了解H264结构(概览)1.0、前言1.0、前言1.1、原理1.1.1. NAL Header1.1.2. RBSP1.2、从NALU出发了解H.264里面的专业词语1.2.1. Slice(片)1.2.2. 宏块(Macroblock)1.2.3. 图像,场和帧1.2.4. I,P,B帧与pts/dts1.2.5. GOP1.2.6 . IDR1.3....转载 2019-06-16 19:27:06 · 1550 阅读 · 1 评论 -
「 H264 Decoder 」how to calculate the time of inputbuffer and outputbuffer copy in Decoder
useecho -n ‘omx_vdec_v4l2.cpp +p’ > /sys/kernel/debug/dynamic_debug/controlor add this log in omx_vdec_v4l2.cppthe time between empty_this_buffer_proxy and empty_buffer_done is copy encode dat...原创 2019-06-17 13:47:22 · 693 阅读 · 1 评论 -
「 Qualcomm 」 How to enabe Video Turbo Mode
Turbo Mode means OC Mode (超频模式)By default it it disabled.code:/vendor/qcom/proprietary/wfd/utils/data/wfdconfig.xml 和 wfdconfigsink.xml<!-- To configure video core in Turbo mode -->...原创 2019-06-17 17:49:39 · 633 阅读 · 0 评论 -
Android Video System[2] --- MediaExtractor, Decoder and Renderer Source Code Analysis
At the beginning, let weLet’s take a look at the catalogue of this chapter:(First)、Multimedia File Parsing - MediaExtractor分离音视频1.1、mMediaPlayer.prepareAsync()1.1.1、MediaPlayer.setVideoSurfaceText...原创 2019-06-18 10:21:26 · 708 阅读 · 0 评论 -
(待学习)编解码资料
详解音频编解码的原理、演进和应用选型等:https://www.cnblogs.com/imstudy/p/10289944.html原创 2019-08-07 18:06:54 · 382 阅读 · 0 评论 -
「音视频直播技术」Android下视频H264解码
上一篇文章中介绍了如何使用MediaCodec编码,今天我们再来分析一下如何通过 MediaCodec 进行解码。为了讲解的方便,我们引入了 MediaExtractor 类。它用于打开MP4等媒体文件,并从中抽取出音视频数据。打开媒体文件MediaExtractor,音视频数据分离器。每种媒体文件如MP4, FLV, MOOV等都是一种容器,里边存放了音频数据和视频数据。Medi...转载 2019-06-10 14:27:05 · 706 阅读 · 0 评论 -
「音视频直播技术」Android下视频H264编码
今天为大家介绍一下音视频直播技术中的视频编码。在移动端通过Camera采集到视频数据后,我们不会直接将它发送出去。因为采集后的视频数据量非常大,比如 1280x720 分辨率的一帧数据,就有可能达到6M大小(码率越高,图像越清晰)。这6M数据如果送到网上传输,会给网络带来非常大的负担。另外,人眼对图像的识别是有限的。拿手机屏幕来说,1K屏与2K屏对于人眼来说是看不出来它们之间的区别的,视频...转载 2019-06-10 14:15:37 · 591 阅读 · 0 评论 -
Android Multimedia框架总结(十二)CodeC部分之OMXCodec与OMX事件回调流程
前言:上篇文中分析到AwesomePlayer到OMX服务,曾介绍到,OMX服务主要完成三个任务: NodeInstance列表的管理,NodeInstance的操作, 事件的处理。最后这个事件处理就是今天放大看的内容。要一步一步一Codec,事件传递必不可少,看下今天的Agenda:(1)OMXCodec与OMX callback事件的处理时序图(2)如何从OMX中dispatch到O...转载 2019-06-10 09:48:49 · 1009 阅读 · 0 评论 -
Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期
本文转自: Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期前言:从本篇开始,将进入Multimedia框架,包含MediaPlayer, Camera, Surface, MediaRecord, 接下来几篇都是MediaPlayer相关。同样看下Agenda如下:(1):MediaPlayer的状态图(2):Idle 状态(3):En...转载 2019-06-07 16:26:42 · 970 阅读 · 0 评论 -
Android Multimedia框架总结(二)MediaPlayer框架及播放网络视频案例
前言:前面我们介绍MediaPlayer相关方法,有人说,没有实际例子,看得不是很明白,今天在分析MediaPlayer时,顺带一个播放网络视频例子。可以自行试试。同样先看下今天的Agenda:(1)Android中的MediaPlayer框架(2)MediaPlayer播放视频主要模块(3)播放主要模块对应组件(4)MediaPlayer方法对应有效状态及无效状态(5)案例:M...转载 2019-06-07 16:53:20 · 879 阅读 · 0 评论 -
Android Multimedia框架总结(三)MediaPlayer中创建到setDataSource过程
前言:前一篇的mediaPlayer框架,对于各个模块的关系,得先从核心类MediaPlayer铺开,同样看下今天的Agenda:(1)MediaPlayer从create到setDisplay时序图(2)MediaPlayer的create过程(3)MediaPlayer的setDataSource过程(4)MediaPlayer的setDisplay过程今天分析的是从MediaP...转载 2019-06-07 17:36:50 · 2149 阅读 · 0 评论 -
Android Multimedia框架总结(四)MediaPlayer中从Java层到C++层类关系及prepare及之后其他过程
前言:在上篇中,分析了MediaPlayer的从创建到setDataSource过程,尽管看了代码,但是没有从MediaPlayer生态上认识各类库之间依赖调用关系,在本篇中将作一个补充整体上的认识。看下今天的Agenda:(1)MediaPlayer各个so库之间关系结构图(2)MediaPlayer各个具体类之间依赖关系图(3)prepare的执行过程(4)prepareAsy...转载 2019-06-08 16:01:17 · 967 阅读 · 0 评论 -
Android Multimedia框架总结(五)多媒体基础概念
上篇中介绍了MediaPlayer从prepare到playback的其他过程,但是很多的一些音视频的基础概念可能还不是很清楚,今天将介绍下对于多媒体开发时,常常有一些基本概念。看下今天的Agenda:(1)对杂而乱的概念进行归类(2)视频部分相关(3)音频部分相关先看一张图,这样常常在说的,是否真的了解它们真实含义:一、对杂而乱的概念进行归类视频分辨率标清、高清、720P...转载 2019-06-08 16:41:09 · 1007 阅读 · 0 评论 -
Android Multimedia框架总结(六)C++中MediaPlayer的C/S架构
前面几节中,都是通过java层调用到jni中,jni向下到c++层并未介绍看下Java层一个方法在c++层 MediaPlayer后续过程frameworks/av/media/libmedia/MediaPlayer.cpp找一个我们之前熟悉的setDataResource方法看下C/S模式的过程.先看下Agenda:(1)举例setDataSource方法在mediaplayer.c...转载 2019-06-08 17:17:35 · 1221 阅读 · 0 评论 -
Android Multimedia框架总结(七)C++中MediaPlayer的C/S架构补充及MediaService介绍
前面一篇主要介绍c++中MediaPlayer的C/S架构中和Client相关部分,并中间穿插了mediaplayerservice的部分。但是对于这块C/S部分,没有放大去分析。今天我们把这块C/S模型放大去看下。同样先看下Agenda:(1)C/S模型中的三角关系流程图(2)MediaPlayerService相关联的类图(3)MediaPlayerService的产生过程(4)...转载 2019-06-08 18:00:14 · 598 阅读 · 0 评论 -
Android Multimedia框架总结(八)Stagefright框架之AwesomePlayer及数据解析器
前言:前面一篇分析了mediaplayerservice及MediaPlayer中的CS模型,但是对于如何能把数据解析出来,渲染到最终的SurfaceView上显示,并且播放起来,我们依然还不得而知,从今天开始,就开始介绍多媒体框架中数据解析->解码->渲染输出过程,也就是后面几篇都要介绍的stagefright框架。先看下今天的Agenda:(1)Stagefright的整...转载 2019-06-09 11:09:52 · 1176 阅读 · 0 评论 -
Android Multimedia框架总结(九)Stagefright框架之数据处理及到OMXCodec过程
上篇主要介绍了Stagefright框架及AwesomePlayer的数据解析器,最后我们说道,涉及parse及decode部分,将在本篇中介绍,看下今天的Agenda:(1)两张图看数据走向(2)AwesomePlayer中prepare过程(3)AwesomePlayer初始化音视频解码器过程(4)Stagefright的Decode过程(5)Stagefright处理数据过程(...转载 2019-06-09 11:49:20 · 731 阅读 · 0 评论 -
Android Multimedia框架总结(十)Stagefright框架之音视频输出过程
前言:上篇文中最后介绍了数据解码放到Buffer过程,今天分析的是stagefright框架中音视频输出过程:先看下今天的Agenda:(1)一张图回顾数据处理过程(2)视频渲染器构建过程(3)音频数据到Buffer过程(4)AudioPlayer在AwesomePlayer运行过程(5)音视频同步(6)音视频输出(7)一张图看音视频输出一、一张图回顾数据处理过程二、视...转载 2019-06-09 12:33:43 · 637 阅读 · 0 评论 -
Android Multimedia框架总结(十一)CodeC部分之AwesomePlayer到OMX服务
前言:上篇文《Android Multimedia框架总结(十)》总结了音视频的输出过程,从今天开始分析Codec部分,今天分析的是AwesomePlayer到OMX服务过程,也就是开启OpenMax准备相关。先看下今天的Agenda:(1)一张图看清OMX在stagefright中的位置(2)一张图看清OpenMax与Stagefright层级的关系(3)OMX初始化流程(4)O...转载 2019-06-09 12:55:12 · 840 阅读 · 0 评论 -
「 Notes 」 Qualcomm Video Documents Notes
■ Multimedia Driver Development and Bringup Guide – Audio (80-NU323-1)■ Multimedia Driver Development and Bringup Guide – Camera (80-NU323-2)■ Multimedia Driver Development and Bringup Guide – Displ...原创 2019-06-19 12:11:24 · 1337 阅读 · 0 评论 -
android 多媒体框架服务之StagefrightPlayer和OMXCodec实现原理
1. 框架结构1.1 StageFright 、openCore、NuPlayer的关系stagefright是在MediaPlayerService这一层加入的,和opencore是并列的,在选用opencore还是stagefright的代码切换上也非常容易。Android上的MediaPlayer播放底层框架已经经历了多次变动,从最早先的OpenCore到后来的StageFrig...转载 2019-06-07 12:21:35 · 2241 阅读 · 1 评论