Android Media

一、媒体相关概念

1、RGB

RGB是一种颜色模式,它代表红色(Red)、绿色(Green)和蓝色(Blue)。在计算机图形学中,RGB通常用于表示彩色图像。RGB颜色模式中的每个颜色分量都可以使用8位(0-255)或16位(0-65535)来表示。在RGB24中,一个像素使用24位来表示,RGB分量都用8位表示,取值范围为0-255。在内存中RGB各分量的排列顺序为BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来操作一个像素,它的定义为:typedef struct tagRGBTRIPLE { BYTE rgbtBlue; // 蓝色分量 BYTE rgbtGreen; // 绿色分量 BYTE rgbtRed; // 红色分量 } RGBTRIPLE; 在RGB32中,一个像素使用32位来表示,其中24位用于表示RGB分量,另外8位用于表示透明度(Alpha)。

2、YUV

YUV是一种颜色编码系统,它将图像分成亮度(Y)和色度(UV)两个部分。其中,亮度表示图像的明暗程度,而色度则表示图像的颜色信息。YUV编码常用于数字视频和图像处理中,是一种广泛使用的颜色空间。YUV编码有多种不同的打包格式和排列方式,如YUV 444 Packed和YUV 422 Semi-Planar等。其中,YUV 444 Packed是一种打包格式,YUV排列方式为YUV YUV YUV…,总长度为w * h * 3;而NV16是YUV 422 Semi-Planar的一种,Y分量单独存放,UV分量交错存放,UV在排列的时候,从U开始(即UVUV…),总长度为w * h * 2。

RGB和YUV都是数字图像处理中常用的颜色空间,它们的主要区别在于表示颜色的方式不同。RGB是将颜色表示为红、绿、蓝三个分量的组合,而YUV是将颜色表示为亮度(Y)和色度(U、V)三个分量的组合。其中,亮度分量Y表示图像的明暗程度,而色度分量U、V则表示图像的色彩信息。相比之下,YUV色彩空间更适合于彩色视频信号的传输和处理,因为它可以更好地压缩色彩信息,减少数据量,提高传输效率。

3、H.26x

H.26x是一系列视频编解码标准的统称,其中包括H.264、H.265和H.266/VVC等。这些标准都是由ITU-T和ISO/IEC联合组织制定的,旨在提高视频编解码的效率和质量。H.264是目前应用最广泛的视频编解码标准,而H.265和H.266/VVC则是它的后继者,分别在压缩率和性能上有所提升。然而,由于H.264已经被广泛应用,H.265和H.266/VVC的推广和应用还需要时间和成本的投入。

帧率(Frame rate)是用于测量显示帧数的量度,通常用每秒显示帧数(Frames per Second)来表示,简称FPS或“赫兹”(Hz)。在视频制作中,帧率是指每秒钟播放的静态图像数量,它决定了视频的流畅度和清晰度。常见的帧率有60、30、25、20、15、10等,其中25帧每秒被认为是最佳的帧率,因为它可以提供足够的流畅度和清晰度,同时还可以节省存储空间和带宽。计算视频的比特率(bitrate)可以使用公式:bitrate = w * h * fps * factor,其中w和h分别是视频的宽度和高度,fps是帧率,factor是一个系数,通常为1.5到3之间。

4、LVDS

LVDS是低电压差分信号技术的缩写,是一种高速串行传输技术,常用于数字信号传输。它通过将信号分为正负两路,使信号传输更加稳定可靠,同时也能减少电磁干扰。在显示器驱动板卡和AIO一体机设计中,LVDS常用于将图像信号从主板传输到显示屏幕上。

5、GVIF

GVIF是指通用视频接口,是一种数字视频传输接口标准,由索尼公司开发。它可以在车载娱乐系统中传输高清视频和音频信号,同时还可以传输控制信号和数据信号。GVIF接口使用LVDS(低电压差分信号)技术,可以实现高速数据传输和抗干扰能力强的特点。索尼公司还开发了GVIF转换芯片,如CXB1457R,用于将模拟视频信号转换为数字信号并传输到车载娱乐系统中。

6、GMSL

GMSL是Maxim集成公司推出的一种高速串行接口,中文名称为千兆多媒体串行链路。它基于SerDes技术,专门为高级驾驶员辅助系统(ADAS)和摄像头监控系统(CMS)而设计,可以提供高达6GB/秒的视频传输速度。它使用STP或同轴电缆,它们既便宜,又对EMC干扰非常强大,使用50Ω同轴电缆或者100Ω屏蔽双绞线(STP)时,长度可达15m甚至更长。GMSL的通信机制可以通过引用了解更多信息。

GMSL有两个版本,分别是GMSL1和GMSL2。其中,GMSL1支持1.5Gbps的速率,而GMSL2支持3Gbps和6Gbps的速率。在配置GMSL链路时,需要选择相应的版本和速率。

7、FPD-Link

FPD-Link是一种用于视频传输的串行接口标准,它可以将视频信号从一个设备传输到另一个设备。FPD-Link有三个版本,分别是FPD-Link I、FPD-Link II和FPD-Link III。需要注意的是,这三个版本不兼容,因此不同系列的设备不能互相收发。除了FPD-Link,还有一个叫做OpenLDI的版本,它在基本的FPD-Link的基础上增加了用于直流均衡的编码功能,以获得更远的传输距离。实际上,增加编码功能的OpenLDI在物理接口上与FPD-Link仍然是相同的,只是需要额外增加编解码的功能。

8、MIPI DSI

MIPI DSI是一种用于移动设备显示的串行接口协议,它定义了从处理器到显示器的通信方式。它可以通过减少线缆数量和功耗来提高移动设备的性能和效率。MIPI DSI协议包括两个部分:物理层和数据链路层。物理层定义了电气特性和传输速率,而数据链路层定义了数据传输的格式和协议。MIPI DSI协议还支持多种显示模式,包括视频模式和命令模式。12

9、MIPI CSI

MIPI CSI是一种用于连接图像传感器和处理器的高速串行接口标准。它由CCI(Camera Control Interface)和CSI(Camera Serial Interface)两部分构成。其中CCI是摄像头控制接口,提供了mipi接口sensor的控制传输通道;CSI是主机处理器与摄像头模块之间的高速串行接口,用于传输图像数据。在MIPI中,SOC的CCI组件通过I2C完成对Camera的配置,使其输出mipi信号,其中一对Clock+/-则由Clock Lane标示,一对DataNBA+/-则由Data Lane标示。

10、DP和eDP

eDP和DP都是显示器接口标准,它们之间的区别如下:

  1. eDP是Embedded DisplayPort的缩写,是一种内嵌式显示接口,主要用于笔记本电脑和平板电脑等移动设备上。而DP是DisplayPort的缩写,是一种面向桌面电脑和高端显示器的显示接口。

  2. eDP使用的是LVDS(低压差分信号)技术,而DP使用的是VESA的Display Stream Compression(DSC)技术,可以实现更高的分辨率和刷新率。

  3. eDP的接口尺寸比DP小,可以实现更薄的显示器设计。

  4. eDP支持多点触控和触控笔等功能,而DP不支持。

11、HDMI

HDMI是高清晰度多媒体接口(High Definition Multimedia Interface)的缩写,是一种数字化的音视频接口标准。它可以传输高清晰度视频和多声道音频信号,同时还支持双向数据传输。HDMI接口广泛应用于各种设备之间的连接,例如电视、显示器、投影仪、音响、笔记本电脑、游戏机等等。HDMI接口有三种类型,分别是标准接口、迷你接口和微型接口,其中标准接口是最常见的一种。HDMI接口还有多个版本,从1.0到2.1,每个版本都有不同的特点和功能。

12、Serializer和Deserializer

视频编串器(Serializer)是一种将数字视频信号转换为串行数据流的电子设备。它将视频信号分成多个数据包,并将这些数据包按照一定的顺序组合成一个数据流,以便于传输和处理。视频编串器通常与解串器(Deserializer)一起使用,用于在视频传输过程中将串行数据流转换为数字视频信号。常见的视频编串器厂家有TI和美信Maxim。

13、PCM

PCM 脉冲编码调制是Pulse Code Modulation的缩写。脉冲编码调制是数字通信的编码方式之一。主要过程是将话音、图像等模拟信号每隔一定时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,同时将抽样值按一组二进制码来表示抽样脉冲的幅值。(原始音频数据,数据量很大,一般要经过压缩(aac)后再使用)

采样率:

声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是 相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复 原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用 40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。

采样大小:

光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化电平数为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16次方。采样大小相对采样率更难理解,因为要显得抽象点,举个简单例子:假设对一个波进行8次采样,采样点分别对应的能量值分别为A1-A8,但我们只使用2bit的采样大小,结果我们只能保留A1-A8中4个点的 值而舍弃另外4个。如果我们进行3bit的采样大小,则刚好记录下8个点的所有信息。采样率和采样大小的值越大,记录的波形更接近原始信号。

14、IIS

IIS是微软提供基于Windows的互联网信息服务,是一个Web服务托管工具,类似于Java里面的Tomcat,可以托管和发布网站、Web应用程序和Web服务。它包含多个组件,这些组件包括协议侦听器(如HTTP.sys)和服务,例如万维网发布服务 (WWW 服务) 和 Windows 进程激活服务 (WAS)。在开发ASP.NET或者WebAPI项目时,需要掌握基本的IIS安装和配置。

15、TDM

TDM是时分多路复用(Time Division Multiplexing)的缩写,是一种数字信号传输技术。在TDM中,多个信号通过在时间上交替传输来共享同一个信道,从而实现多路信号的传输。TDM协议的时钟速率等于采样率乘以TDM帧长。TDM传输有两种基本的模式:主模式和从模式。主模式是指由主设备控制时钟信号,从设备根据主设备的时钟信号进行数据传输;从模式是指从设备控制时钟信号,主设备根据从设备的时钟信号进行数据传输。在TDM中,每个时隙都可以传输一个数据,时隙的数量和每个时隙所包含的数据比特数决定了TDM的帧长。例如,8 slot、32bit的音频数据也被称为TDM256(=8*32)。

16、A2B

A2B是ADI的汽车音频总线,被广泛应用于汽车音频系统中。通过A2B总线,可以实现音频信号的传输和控制,同时减少了线缆的使用,提高了音频系统的可靠性和抗干扰能力。此外,A2B开发套件可以帮助0基础的用户快速上手A2B应用开发,提高开发效率。

二、Android媒体子系统介绍

Android媒体子系统是指Android系统中负责音视频相关功能的组件和API,可以让应用程序在Android平台上进行高品质的音视频处理,它主要由音频子系统、视频子系统、音视频编解码和摄像头子系统组成。如下为本篇介绍的内容(Audio子系统在另外篇幅中介绍):

1、media server是android的一个重要服务,主要是与多媒体相关的一些系统服务。

2、MediaPlayer、MediaRecorder:用于播放、录制音视频文件的高级别服务,MediaPlayer支持多种音频格式的播放、录制。

3、MediaPlayerService:MedaiPlayer的服务端。

4、MediaProjection:用于屏幕录制,使用MediaCodec对屏幕采集到的图像帧进行编码,最终保存到文件或流中。

5、MediaSession、MediaController、MediaBrowser、MediaBrowserService :一个多媒体控制架构,用于帮助Android应用程序在后台控制和处理多媒体播放器相关的事件。

6、MediaCodec、MediaMuxer、MediaExtractor:用于音视频编解码、混合、分离。

7、Surface、SurfaceView、TextureView:用于播放视频,它们提供了视频渲染功能,他们也属于Android View(视图)系统的一部分

8、VideoView:用于播放本地或网络上的音视频文件,他也属于Android View(视图)系统的一部分。

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android MediaSource是ExoPlayer框架中的一个组件,用于定义要播放的媒体资源。可以通过使用不同的MediaSource来播放不同的媒体,包括视频和音频。 在ExoPlayer中,有几种不同类型的MediaSource可供选择使用。其中包括: 1. ExtractorMediaSource:用于从媒体文件中提取媒体数据的MediaSource。可以使用Uri指定媒体文件的位置,并使用ExtractorMediaSource.Factory创建实例。 2. ConcatenatingMediaSource:用于无缝拼接多个媒体资源的MediaSource。可以将多个ExtractorMediaSource或其他MediaSource实例传递给ConcatenatingMediaSource,并使用player.prepare()方法将其注入到ExoPlayer中。 3. LoopingMediaSource:用于循环播放单个媒体资源的MediaSource。可以将要循环播放的MediaSource传递给LoopingMediaSource,并指定循环播放的次数。 这些MediaSource可以与其他ExoPlayer组件(如Renderer、TrackSelector和LoadControl)一起使用,以实现更丰富的媒体播放功能。 请注意,上面提到的代码示例是使用ExoPlayer框架实现视频拼接和循环播放的示例。您可以使用ExtractorMediaSource、ConcatenatingMediaSource和LoopingMediaSource类来创建适合您需求的媒体播放器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【Android】使用Exoplayer播放视频](https://blog.csdn.net/m0_37602827/article/details/109191070)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值