直播平台技术原理浅析

直播平台技术原理浅析——听课笔记

课程地址:https://www.bilibili.com/video/BV1dv411C7vx?share_source=copy_web

直播相关基础知识

RGB格式:

​ 每一个数据单元直接表示RGB三原色,用各原色其所占位数表示。

​ 常用的有:

​ RGB888(24位色)

​ RGB565(16位色) 因为要是8的倍数故排成16位,多留出以为留给绿色通道,因为人眼对绿色光波最敏感。

为什么需要对原始采样做编码(为什么视频需要编解码):

​ 不考虑音频的情况下,一段一小时1080p的纯视频未编码的原始数据(RGB888)的大小为: 500G

​ ***编码就是未了缩小原始数据的大小

视频冗余
冗余信息类型冗余信息类型
空间冗余图像相邻像素之间有较强的相关性
时间冗余视频序列的相邻图像之间内容相似
编码冗余不同编码值出现概率不同
视觉冗余人的视觉系统对某些细节不敏感
知识冗余规律性的结构可由先验知识和背景知识到
结构冗余某些图片存在的分布模式
视频帧的类型
  • I帧:是自带全部信息的独立帧,是最完整的画面(全帧JPEG压缩编码),无需参考其他图像便可独立进行解码。视频序列的第一帧,始终都是I帧。

    • P帧:“帧间预测编码帧”,需要参考前面的I帧和(或)P帧不同的部分,才能进行编码。P帧对前面的P和I帧有依赖性,但是,P帧压缩率比较高,占用的空间较小。

    • B帧: “双向预测编码帧”,以前帧后帧作为参考帧。不仅参考前面,还参考后面的帧,所以,它的压缩率最高,可达到200:1。

      注意:B 帧不用在直播里面,应为它拿不到下一帧!!!
量化

通过用更粗糙的数据表示精细的数据来降低编码的数据量,或者通过去除人眼敏感的信息来降低编码的数据量

编码过程:

  1. 每一帧原始采样分块

  2. 图片分组

    有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值只有1%以内。

    一组成为一个GOP(group of pictures)(包括一份I帧和多分P/B帧)

  3. 逐帧编码

封装格式(一块索引信息加上了许多文件块)

将数据流按照一定格式封装传输

网络传输协议
RTMPHTTP-FLVHLSDASH
传输方式TCP流HTTP流(基于HTTP的RTMP)HTTPHTTP
视频封装格式FLVFLV TAGMPEG2-TSMP4,3GP,WEBM
原理数据收到后立即转发同RTMP集合一段时间的数据,生成切片文件并且更新m3u8索引文件生成不同类型的切片,根据分辨率自动适配
数据分段连续流连续流切片文件切片文件
WEB支持非原生支持可以通过flv.js解包播放可以通过flv.js解包播放如果dash文件列表是mp4 webm文件就直接播放
其他跨平台支持性差不支持多音频流多视频流,不便于seek,IOS不支持播放是需要多次请求,网络要求高不普及

如何搭建一套直播系统

客户端推流处理过程
  • 软编码:使用CPU进行编码,通过软件代码来实现音视频编解码算法,如FFMpeg,GPUImage等。
  • 硬编码使用非CPU的硬件芯片或电路实现编码算法,通过调用编解码芯片提供的API来实现。如安卓的MediaCodec。
  • 现在的智能手机的“芯片”从严格意义上说其实已经不是单纯一个CPU,而是SoC(System on a chip),它由CPU、GPU、DSP等芯片继承在一起。
服务端流处理过程

基础流媒体服务器主要包含几个功能:信令处理、视频流处理(转码/转封装/接&拉流)、视频文件储存。

流媒体服务器有大量成熟的解决方案(开源、商用化):如SRS、NGINX、CRTMPD、AMS、WOWZA等

基础流媒体服务器主要包含几个功能:信令处理、视频流处理(转码/转封装/接&拉流)、视频文件储存。

流媒体服务器有大量成熟的解决方案(开源、商用化):如SRS、NGINX、CRTMPD、AMS、WOWZA等

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值