Android视频 | 青训营笔记

121 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天,本次笔记主要总结安卓开发视频基础知识。

视频的基本元素

RGB三原色:每种颜色都用三个变量来表示-红色绿色以及蓝色的强度,分别从0到255,一共256个等级。
分辨率:指的是纵横方向的像素数量,一般表示为:宽*高。
码率/比特率:表示单位时间内传送bit的数目,单位bps,表示是单位时间播放连续的媒体如压缩后的音视频的bit数量,也称为码流。这种bps的单位电信领域上表示速度,即常说的网速。 帧率:每秒传输帧数通俗来讲就是指动画或视频的画面数、帧率。每秒钟帧数越多,所显示的动作就会越流畅。
视频数据的封装:视频编码后,加上音频编码要一起进行封装。封装就是将已经编码压缩好的视频轨和音频轨按照一定格式放到一个文件中。

视频压缩

颜色空间:YUV是另一种颜色数字化表示方式,视频通信系统之所以采用YUV而不是RGB,主要是因为RGB信号不利于压缩.YUV这种方式,加入了亮度的概念,眼睛对于亮和暗的分辨要比颜色的分辨更精细。
帧间压缩/时间压缩:基于许多视频或者动画的连续前后两帧具有很大关联性(即连续的视频其相邻帧之间具有冗余信息)的特点来实现的。

直播推拉流协议

推拉流协议方案
RTMP:Real-Time Messaging Protocal
HTTP-FLV:HTTP+FLV
HLS:HTTP Live Streaming

image.png

RTMP实时消息协议也称实时消息传输协议,是最初由Macromedia为通过互联网在Flash播放器与一个服务器之间传输流媒体音频、视频和数据而开发的一个专有协议。
优势:①基于tcp协议;②技术成熟,ffmpeg项目中由RTMP库;③低延迟。 劣势:①停止更新;②规范上没有支持H265;③使用1935端口,会被防火墙阻碍。