
学好Android音视频
文章平均质量分 76
目标读者是对音视频开发感兴趣但是又不知道如何下手的初学者们,希望对大家有所帮助!
程思扬
知道的越多,不知道的越多。
展开
-
Android音视频——AwesomePlayer到OMX服务过程
初始化MediaPlayerService对象的时候会创建OMX对象,OMX对象的构造函数会创建mMaster, mMaster负责获得与管理硬件平台的硬件解码器组件库。在创建mMaster->makeComponentInstance的过程中,通过上面mVideoTrack传递过来的解码器类型名,找到相对应的解码器的库,然后实例化。到此,就介绍完AwesomePlayer是如何对OMX进行初始化的,以及如何关联到对应硬件 平台上的Hardware解码器的回调流程。其服务器端与OMX在一个 进程空间中。原创 2022-09-18 12:03:55 · 1874 阅读 · 0 评论 -
Android音视频——OMX 中 Nodeinstance 列表的管理与节点的操作
OMXCodec对具体的component函数的操作,是通过OMXNodelnstance来实现的,如filIBuffer>emptyBuffer>sendCommand等,它们都是通过OMXCore.h中的宏定义间接调用OMX_Component.h的OMX_COMPONENTTYPE中的相应函数指针来完成的。我们又知道AwesomePlayer类中持有OMX客户端,所以这些从OMX组件通知上来的消息就可以到达AwesomePlayer中。在哪里使用kCallbacks呢?......原创 2022-07-31 18:56:54 · 1824 阅读 · 0 评论 -
Android音视频——OMX的初始化流程
AwesomePlayer是如何获得OMX服务的呢?过程如下:•在 AwesomePlayer 初始化的时候,会调用 AwesomePlayer::onPrepareAsyncEvent。, 继而调用 AwesomePlayer::initVideoDecoder 以及 AwesomePlayer::initAudioDecoder0•然后开始正式进入OMX以及硬件解码器的初始化工作。之前的AwesomePlayer初始化工作都是在做铺垫。当OMX开始初始化时,才真正开始核 心的初始化工作。我们知道原创 2022-06-19 13:52:53 · 1198 阅读 · 0 评论 -
Android音视频——OpenMAX (OMX)框架
本文分为两个部分进行讲解Codec 部分中的 AwesomePlayer 到 OMX 服务前面介绍了NuPlayer最终解码都会到达OMX框架,也就是 OpenMAX框架,本文开始分析编解码部分中的AwesomePlayer到OMX服务过程,也就是开启OpenMAX准备相关内容。Android系统中用OpenMAX来做编解码,Android向上抽象了一 层OMXCodec,提供给上层播放器AwesomePlayer使用。同时有一个IOMX接口,在ACodec 中可以通过IOMX调用OpenMAX组件。播原创 2022-06-12 12:25:55 · 4100 阅读 · 0 评论 -
Android音视频——NuPlayer的渲染模块
渲染模块的主要功能如下。下面将音视频原始数据 缓存到队列。在\frameworks\av\media\libmediaplayerservice\上面主要是发送了一个消息kWhatDrainAudioQueue,找到对应接收消息的地方,代码如 下:主要是有一个进行判断的onDrainAudioQueue函数,判断是否需要重新向AudioSink写入 数据,代码如下:到这里,已经很清楚了,音频播放流程如下:先打开音频后端,然后当向音频队列中发送 数据时,音频队列同时向音频后端写入数据,以供播放音频。那原创 2022-06-04 17:30:10 · 1309 阅读 · 0 评论 -
Android音视频——NuPlayer的解码模块
NuPlayer的解码引入了 NuPIayerDecoderBase,这是一个基类。真正的解码器逻辑在 NuPlayerDecoder.cpp文件中,它继承自NuPlayerDecoderBase类。下面先看看实例化解码器, 其位于frameworks\av\media\libmediaplayerservice\nuplayer\NuPlayer.cpp中: status_t NuPlayer::instantiateDecoder(bool audio, sp<DecoderBase&g原创 2022-05-04 15:14:55 · 1317 阅读 · 0 评论 -
Android音视频——NuPlayer数据解析模块详解
从上文 Android音视频——NuPlayer框架的图来看可以看到 NuPlayer 的解析模块主要是原创 2021-08-11 22:37:39 · 1522 阅读 · 0 评论 -
Android音视频——NuPlayer框架
如标题所说,接下来讲的是NuPlayer,不知道对这个,大家了解多少呢。Android2.3时引入流媒体框架,而流媒体框架的核心是NuPlayer。在之前的版本中一般认为LocalPlayback就用Stagefrightplayer+Awesomeplayer,流媒体用NuPlayer。Android4.0之后HttpLive和RTSP协议开始使用NuPlayer播放器,Android5.0(L版本)之后本地播放也开始使用NuPlayer播放器。Android7.0(N版本)则完全去掉了Aweso原创 2021-08-08 19:47:43 · 2542 阅读 · 0 评论 -
Android音视频——MediaPlayerService
MediaPlay一定不少人都知道,那MediaPlayerService呢?有多少人了解过呢,MediaPlayerService和MediaPlayer直接到关系是什么?那么接下来带着这些疑问往下看MediaPlayer是客户端,是Android自带的一个多媒体播放类,这个在Android音视频——系统播放器介绍(一)里有详细介绍过,大家不了解的可以看一下。MediaPlayerService和MediaPlayerService::Client是服务器端。MediaPlayerService实现原创 2021-08-01 00:04:09 · 1504 阅读 · 0 评论 -
Android音视频——系统播放器介绍(三)
常用监听器开发者可以设置一些监听器,监听MediaPlayer的状态,错误事件等等。开发者应在同一个线程中创建MediaPlayer与设置的监听器。setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener)监听MediaPlayer准备完成。一般与prepareAsync配合使用。setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeCha原创 2021-07-28 20:53:23 · 1320 阅读 · 0 评论 -
Android音视频——系统播放器介绍(二)
在上文Android音视频——系统播放器介绍(一)中,介绍到了状态,但是没有详细讲解,本篇就为大家带来MediaPlayer状态涉及到的方法。此图是官方图例椭圆代表MediaPlayer可能停留的状态。椭圆之间的箭头表示方法调用,状态切换的方向。单箭头表示方法同步调用,双箭头表示异步调用。从图中我们可以看出MediaPlayer的状态切换和涉及到的方法。Idle-End当new一个MediaPlayer或者调用了reset函数,当前MediaPlayer会处于Idle状态。调用release后,原创 2021-07-27 21:14:43 · 863 阅读 · 0 评论 -
Android音视频——系统播放器介绍(一)
相信大家看到这个标题就能想到,本篇讲的是什么播放器了,没错就是MediaPlayer。分享一首动听的纯音乐Shut The Window!相信有不少人都用过它,但是有少人是只停留在用的阶段呢,下一篇文章会接着详细介绍各个状态下的生命周期,本篇对新人友好一点,先简单讲一下相关知识点及调用。什么是MediaPlayerMediaPlayer是Android自带的一个多媒体播放类,它可以用来播放音视频文件,或者是音频文件,我们可以用它来播放本地音频,或者是网络在线音频。属于 android.media原创 2021-07-25 11:20:51 · 1872 阅读 · 5 评论 -
Android音视频——相关概念
在学习Android音视频里,讲过音视频数据从哪里来,怎么获取,其实无论在哪个平台,图 像、视频最初都 是来自摄像头,而音频最初都是来自麦克风,相较于视频,其实音频是更不易于观察,那么你们知道麦克风是如何采集声音的吗许嵩-有何不可麦克风里面有一层碳膜,非常薄而且十分敏感。声音其实是一种纵波,会压缩空气也会压缩这层碳膜,碳膜在受到挤压时也会发出振动,在碳膜的下方就是一个电极,碳膜在振动的时候会接触电极,接触时间的长短和频率与声波的振动幅度和频率有关,这样就完成了声音信号到电信号的转换。之后再经过放大电路原创 2021-07-23 18:23:03 · 996 阅读 · 0 评论 -
Android音视频——基础介绍
视频编码视频编码所谓的视频编码就是指通过特定的压缩技术,将某个视频格式文件转换成另一种视频格式文件的方式。视频流传输中最重要的编解码标准有国际电联的 H.261、H.263、H.264,运动静止图像专家组的 M-JPEG 和国际标准化组织运动图像专家组的 MPEG 系列标准,此外在互联网上被广泛应用的还有 Real-Networks 的 RealVideo、微软公司的 WMV 以及 Apple 公司的QuickTime 等。视频编码分为两个系列,分别介绍如下。MPEG :(由 ISO[国际标准化组织]原创 2021-07-22 21:16:45 · 946 阅读 · 3 评论