Android视频直播基础知识

直播流程:

  • 1、 采集视频、音频
    摄像头 NV21 camera
    麦克风 pcm数据
  • 2、 视频处理
    美颜、水印、滤镜
  • 3、 音视频数据压缩
    硬编码:视频MediaCodec 音频AudioTack
    软编码:
    视频压缩、视频编码 H264 x264将NV21 数据转换成YUV420P
    音频压缩、音频编码 AAC
  • 4、 推流
    将采集到的音视频数据,根据流媒体协议推送到流媒体服务器上
    将音视频封装成FLV或者TS流
  • 5、 流媒体服务器数据处理
    截屏,获取视频缩略图
    录制
    实时转码
    CDN分发
  • 6、 拉流
    从流媒体服务器上获取音视频数据
    通过流媒体协议:RTMP、RTSP、HLS、HTTP
  • 7、 音视频解码
    视频解码:硬解:MediaCodec 软解:H264
    音频解码:硬解:AudioTrack 软解:faac
  • 8、 播放
  • 9、 聊天互动
  • 10、弹幕

主流的流媒体服务器

  • FMS:(Flash media server) Adobe推出的
    支持协议:RTMP、RTMPT、RTMPE、RTMPS、RTMFP
    商业,收费成本高
  • Red5 :
    暴雪公司 是Java开发的基于flash的流媒体使用RTMP协议,与FMS兼容,MP3和FLV文件转换成流
    免费开源,性能差不稳定
  • Nginx :伪流媒体
    c开发的,高性能HTTP和反向代理流媒体服务器,外网反向代理到内网,再响应到到公网
    是一个模块化的服务器,部署方便,性能高

RTMP协议:

RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议簇,包括RTMP基本协议及
RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协
议的流媒体/交互服务器之间进行音视频和数据通信。

RTMP协议是Adobe公司推出的实时传输协议,主要用于基于flv格式的音视频流的实时传输。得到编码后的视音频数据后,先要进行
FLV包装,然后封包成rtmp格式,然后进行传输。使用RTMP格式进行传输,需要先连接服务器,然后创建流,然后发布流,然后传输
相应的视音频数据。整个发送是用消息来定义的,rtmp定义了各种形式的消息,而为了消息能够很好地发送,又对消息进行了分块处
理,整个协议较为复杂。

音频PCM数据

参数:声道数、采样位数、采样率
1、声道数:单声道、立体声等
2、采样率:每秒钟取得声音样本的次数,频率越高,声质越好,占用资源越多。人耳的分辨率有限,太高也分辨不出。
16位声卡中有22.05KHz和44.1KHz等几级,22.05KHz相当于FM广播的音质,44.1KHz相当于CD的音质了,
目前常用的采样率不超过48KHZ
3、采样位数:衡量声音波动变化的一个参数,也可以说是声卡的分辨率。计算机中采样位数一般有8位和16位。

视频参数:

  • 分辨率:视频是由连续的图像构成的。图像则是由像素(pixel)构成的。
    一张图像有多少像素,称为这个图像的分辨率。视频的分辨率就是每一帧图像的分辨率。
  • 帧率:一个视频,每一秒由多少图像构成,称为这个视频的帧率(frame-rate)
  • 码率:码率的定义是视频文件体积除以时间。单位一般是Kbps(Kbit/s)或者Mbps(Mbit/s)

H264编码框架:

分为两层:

  • 视频编码层(VCL):负责高效的视频内容表示,VCL数据即编码处理的输出,表示被压缩编码后的视频数据序列
  • 网络提取层(NAL):负责以网路要求的恰当的方式对数据进行打包和传送,是传输层,网络播放和本地播放都是用此来传输

编码原理:
H264协议里定义了三种帧:I帧、P帧、B帧
H264中图像以序列位单位进行组织,一个序列是一段图像编码后的数据流,以I帧开始到下一个I帧结束。一个序列的
第一个图像叫IDR图像(立即刷新图样),IDR图像都是I帧图像。
H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数
据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得
重新同步的机会。IDR图像之后的图像永远不会使用IDR之前的图像的数据来解码。

h264的压缩方法:

  • 1.分组:把几帧图像分为一组(GOP,也就是一个序列),为防止运动变化,帧数不宜取多
  • 2.预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
  • 3.数据传输:最后将I帧数据与预测的差值信息进行存储和传输。

I帧 : 关键帧

I帧:帧内编码帧 ,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)
I帧特点:
1)它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输;
2)解码时仅用I帧的数据就可重构完整图像;
3)I帧描述了图像背景和运动主体的详情;
4)I帧不需要参考其他画面而生成;
5)I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量);
6)I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧;
7)I帧不需要考虑运动矢量;
8)I帧所占数据的信息量比较大。

P帧 :前向预测编码帧

P帧:表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,
生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
P帧的预测与重构:
P帧是以I帧为参考帧,在I帧中找出P帧“某点”的预测值和运动矢量,取预测差值和运动矢量一起传送。
在接收端根据运动矢量从I帧中找出P帧“某点”的预测值并与差值相加以得到P帧“某点”样值,从而可得到完整的P帧。
P帧特点:
1)P帧是I帧后面相隔1~2帧的编码帧;
2)P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差);
3)解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像;
4)P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧;
5)P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧;
6)由于P帧是参考帧,它可能造成解码错误的扩散;
7)由于是差值传送,P帧的压缩比较高。

B帧:双向预测内插编码帧

B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况,
但我这样说简单些),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本
帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。
B帧的预测与重构
B帧以前面的I或P帧和后面的P帧为参考帧,“找出”B帧“某点”的预测值和两个运动矢量,并取预测差值和运动矢量传送。
接收端根据运动矢量在两个参考帧中“找出(算出)”预测值并与差值求和,得到B帧“某点”样值,从而可得到完整的B帧。
B帧特点
1)B帧是由前面的I或P帧和后面的P帧来进行预测的;
2)B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量;
3)B帧是双向预测编码帧;
4)B帧压缩比最高,因为它只反映两参考帧间运动主体的变化情况,预测比较准确;
5)B帧不是参考帧,不会造成解码错误的扩散。。

一般来说,I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可 以达到50。可见使用B帧能节省大量空间,节省出来的
空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

帧内压缩:

帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑
相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,由于帧内压缩是编码一个完整
的图像,所以可以独立的解码、显示。帧内压缩一般达不到很高的压缩,跟编码jpeg差不多。

帧间压缩:

帧间(Interframe)压缩的原理是:相邻几帧的数据有很大的相关性,或者说前后两帧信息变化很小的特点。
也即连续的视频其相邻帧之间具有冗余信 息,根据这一特性,压缩相邻帧之间的冗余量就可以进一步提高压缩量,
减小压缩比。帧间压缩也称为时间压缩(Temporal compression),它通过比较时间轴上不同帧之间的数据进行压缩。
帧间压缩一般是无损的。帧差值(Frame differencing)算法是一种典型的时间压缩法,它通过比较本帧与相邻帧
之间的差异,仅记录本帧与其相邻帧的差值,这样可以大大减少数据量。

无损(Lossy less)压缩:

也即压缩前和解压缩后的数据完全一致。多数的无损压缩都采用RLE行程编码算法。
有损(Lossy )压缩:
意味着解压缩后的数据与压缩前的数据不一致。在压缩的过程中要丢失一些人眼和人耳所不敏感的图像或音频
信息,而且丢失的信息不可恢复。

几乎所有高压缩的算法都采用有损压缩,这样才能达到低数据率的目标。丢失的数据率与压缩比有关,压缩比越小,丢失
的数据越多,解压缩后的效果一般越差。此外,某些有损压缩算法采用多次重复压缩的方式,这样还会引 起额外的数据丢失。

ACC编码特点:

(1) AAC是一种高压缩比的音频压缩算法,但它的压缩比要远超过较老的音频压缩算法,
如AC-3、MP3等。并且其质量可以同未压缩的CD音质相媲美。
(2) 同其他类似的音频编码算法一样,AAC也是采用了变换编码算法,但AAC使用了分辨率
更高的滤波器组,因此它可以达到更高的压缩比。 (3) AAC使用了临时噪声重整、后向自适应线性预测、联合立体声技术和量化哈夫曼编码等最新技术,
这些新技术的使用都使压缩比得到进一步的提高
(4) AAC支持更多种采样率和比特率、支持1个到48个音轨、支持多达15个低频音轨、具有
多种语言的兼容能力、还有多达15个内嵌数据流。 (5) AAC支持更宽的声音频率范围,最高可达到96kHz,最低可达8KHz,远宽于MP3的16KHz-48kHz的范围。 (6)不同于MP3及WMA,AAC几乎不损失声音频率中的甚高、甚低频率成分,并且比WMA在频谱结构上更接近于原始
音频,因而声音的保真度更好。专业评测中表明,AAC比WMA声音更清晰,而且更接近原音。 (7)AAC采用优化的算法达到了更高的解码效率,解码时只需较少的处理能力。

AAC与MP3规格对比

比特率:AAC - 最高超过400kbps / MP3 - 32~320kbps采样率:AAC - 最高96kHz / MP3 - 最高48kHz声道数:AAC - (5.1)六声道 / MP3 - 两声道采样精度:AAC - 最高32bit / MP3 - 最高16bit

demo地址:https://pan.baidu.com/s/1Wz5O7qVpgvsWx6l4j8NfvA

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • ### YUV颜色空间 视频是由一帧一帧的数据连接而成,而一帧视频数据其实就是一张图片。 yuv是一种图片储存格式...
    天使君阅读 3,174评论 0 4
  • [TOC] 音视频&流媒体 是什么促使我要写这一篇音视频入门文章?那是因为和一妹子打赌码率的概念,结果输了;对一个...
    AllenWu阅读 4,627评论 1 25
  • 本文将视频相关的理论知识与基础概念划分为 11 个知识点,如下: 视频 分辨率 比特率 采样率 帧率 视频编码 编...
    王英豪阅读 4,843评论 0 13
  • FFmpeg 介绍 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LG...
    Y了个J阅读 11,013评论 0 28
  • 一眼望到尽头 VS 成长但有风险,你怎么说? 朋友圈里有人转了一篇文章《34岁,我从体制内辞职了,裸辞》,可能是因...
    乐活雅阅读 488评论 2 2