【直播技术探讨第一章】

来源:互联网 发布:java发牌程序 编辑:程序博客网 时间:2024/06/04 05:01

【直播技术探讨第一章】

1、  首先了解一下视频直播的流程图吧

 

视频直播的流程可以分为如下几步: 
采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放

1)  采集包括视频采集和音频采集

视频采集需要用到的协议

由摄像头等设备拍摄成 YUV 编码的原始数据,然后经过编码压缩成 H.264 等格式的数据分发出去。常见的视频封装格式有:MP43GPAVIMKVWMVMPGVOBFLVSWFMOVRMVB  WebM 等。 

图像采集和编码面临的主要挑战在于:设备兼容性差、延时敏感、卡顿敏感以及各种对图像的处理操作如美颜和水印等。

   音频采集需要用到的协议:

频的采集过程主要通过设备将环境中的模拟信号采集成 PCM 编码的原始数据,然后编码压缩成 MP3 等格式的数据分发出去。常见的音频压缩格式有:MP3AACHE-AACOpusFLACVorbis (Ogg)Speex  AMR等。 
音频采集和编码主要面临的挑战在于:延时敏感、卡顿敏感、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法等。

2)  处理

视频的处理

一般为美颜、水印、滤镜(可以使用GPUImage这个开源类库处理图片)

以及设备兼容性,延时,卡顿,等

     音频的处理

   延时敏感、卡顿敏感、噪声消除(Denoise)、回声消除(AEC)、静音检测(VAD)和各种混音算法

3)  编码封装

帧内编码流程图:


a.帧内预测(去除空间冗余)

b.变换(去除空间冗余)

c.量化(去除视觉冗余,有损压缩)

d.熵编码(去除编码冗余)

帧间编码流程图:

a.       帧内预测(去除时间冗余)

b.       变换(去除空间冗余)

c.       量化(去除视觉冗余,有损压缩)

d.       熵编码(去除编码冗余)

主要区别:就是第一步不相同,其实这两个流程也是结合在一起的,我们通常说的I帧和P帧就是分别采用了帧内编码和帧间编码

如今的编码器有哪些对比

压缩编码

目前流行:MPEG-2H.264MPEG-4AVC)及VC-1

方案一:  H.264/AVC.将原始YUV420SP视频帧压缩成H.264再传输,常见的基于H264的开源Encoder有JM、X264、T264、Hdot264等 

方案二:  MPEG4.将原始YUV420SP视频帧压缩成MPEG4再传输

最新技术方向:H.265VP9FFmpeg 

H.265也叫HEVC,与H.264相比,H.265的最大本领是可以在维持画质基本不变的前提下,让数据传输带宽减少至H.264的一半。同时其还支持最高为7680*4320的分辨率,因此即使是2160P甚至是更高级别的超高清视频同样可以通过H.265格式进行编码。

Google公司,他们提出的VP9编码是最有可能跟H.265一较高下的新标准。VP9全称是WebM open-source V9,此前Google推广过VP8VP9时代才算渐入佳境,Google嫡系如YoutubeChrome等都已支持VP9编码,还争取到了FireFox的支持,IntelARMNVIDIA、三星、Marvell等硬件厂商也早就宣布支持VP9

注:音频编码器有Mp3,AAC等。

4)  推流

针对Android端的RTMP推流选择方案主要有两大类:

1、RTMP

2、HLS

3、RTSP

  RTMP

     RTMP(Real TimeMessaging Protocol)实时消息传送协议是Adobe Systems公司为Flash播

   放器和服务器之间音频、视频和数据传输开发的开放协议。

   它有三种变种:

   1) 工作在TCP之上的明文协议,使用端口1935;

   2)  RTMPT封装在HTTP请求之中,可穿越防火墙;

   3)  RTMPS类似RTMPT,但使用的是HTTPS连接;

   RTMP协议(Real Time Messaging Protocol)是被Flash用于对象,视频,音频的传输.这个协议建立在TCP协议或者轮询HTTP协议之上.

       RTMP协议就像一个用来装数据包的容器,这些数据既可以是AMF格式的数据,也可以是FLV中的视/音频数据.一个单一的

   连接可以通过不同的通道传输多路网络流.这些通道中的包都是按照固定大小的包传输的.

 

HLS

HTTP Live StreamingHLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPhone、iPad)提供音视频直播和点播方案

HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件(MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播

HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟一般总是会高于普通的流媒体直播协议。 

   根据以上的了解要实现HTTP Live Streaming直播,需要研究并实现以下技术关键点

1.       采集视频源和音频源的数据

2.        对原始数据进行H264编码和AAC编码

3.        视频和音频数据封装为MPEG-TS

4.        HLS分段生成策略及m3u8索引文件

5.        HTTP传输协议

 RTSP(Real TimeStreaming Protocol):

  实时流传送协议,是用来控制声音或影像的多媒体串流协议, 由Real Networks和Netscape共同提出的

5) 播放

    电脑端:VLC等

手机端:Vitamio以及ijkplayer等

总结:

一般情况下我们把上面流程的前四步称为第一部分,即视频主播端的操作。视频采集处理后推流到流媒体服务器,第一部分功能完成。第二部分就是流媒体服务器,负责把从第一部分接收到的流进行处理并分发给观众。第三部分就是观众啦,只需要拥有支持流传输协议的播放器即可。 



注释:个人总结学历历程,欢迎大神亲临指导,小白努力中。。。


参考链接:http://www.jianshu.com/p/bd42bacbe4cc

http://blog.csdn.net/stn_lcd/article/details/56012437

http://blog.csdn.net/xiejiashu/article/details/34860575

http://blog.csdn.net/tttyd/article/details/12032357/

http://blog.csdn.net/mediapro/article/details/53423851

0 0
原创粉丝点击