Android音视频开发;斗鱼直播实现

一、直播的本质

实时推送/拉取音视频数据


二、视频直播流程

视频直播的流程可以分为如下几步:

(1)采集

(2)处理

(3)编码和封装

(4)推流到服务器

(5)服务器流分发

(6)播放器流播放

1、采集

视频的采集涉及两方面数据的采集:音频采集和图像采集,它们分别对应两种完全不同的输入源和数据格式。

(1)两个传感器:

CCD:图像传感器,用于图像采集和处理,把图像转换为电信号

拾音器:声音传感器,用于声音采集和处理,把声音转换为电信号

(2)格式:

视频采样数据 : 一般都是 YUV 或 RGB 格式

音频采样数据 :一般都是PCM格式

由于所采集的内容非常大,所以需要进行压缩。常见的音频压缩格式有:MP3,AAC,HE-AAC,Opus,FLAC,Vorbis (Ogg),Speex 和 AMR等。视频编码压缩成 H.264 等格式的数据分发出去。常见的视频封装格式有:MP4、3GP、AVI、MKV、WMV、MPG、VOB、FLV、SWF、MOV、RMVB 和 WebM 等。

2、处理

视频或者音频完成采集之后得到原始数据,为了增强一些现场效果或者加上一些额外的效果,我们一般会在将其编码压缩前进行处理,例如:美颜及水印。各种美颜和视频添加特效的App都是基于GPUImage框架实现。

3、编码和封装

视频编码的意义:原始视频数据存储空间大。核心思想就是去除冗余信息。

常见的视频编码器:

(1)H.264/AVC

(2)HEVC/H.265

(3)VP8

(4)VP9

(5)FFmpeg :是一个跨平台的开源视频框架,能实现如视频编码,解码,转码,串流,播放等丰富的功能。其支持的视频格式以及播放协议非常丰富,几乎包含了所有音视频编解码、封装格式以及播放协议。

封装:是把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起的标准。

常见的封装格式:

(1)AVI 格式(后缀为 .avi)

(2)DV-AVI 格式(后缀为 .avi)

(3)QuickTime File Format 格式(后缀为 .mov)

(4)MPEG 格式(文件后缀可以是 .mpg .mpeg .mpe .dat .vob .asf .3gp .mp4等)

(5)WMV 格式(后缀为.wmv .asf)

(6)Real Video 格式(后缀为 .rm .rmvb)

(7)Flash Video 格式(后缀为 .flv)

(8)Matroska 格式(后缀为 .mkv)

(9)MPEG2-TS 格式 (后缀为 .ts)

4、推流

传输协议:

RTMP :实时消息传输协议,Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议,因为是开放协议所以都可以使用了。 RTMP协议用于对象、视频、音频的传输。

HLS(HTTP Live Streaming):是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议

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

具体可以参考;Android音视频开发;一个半小时实现斗鱼直播

推荐阅读更多精彩内容