LFLiveKit架构简介
LFLiveSession
LFLiveSession 是整个sdk的核心,提供对外部的主要接口。主要功能有:管理推流开关、管理音视频录制及渲染、管理录制渲染后的音视频编码、管理编码后的数据上传、管理音视频的基础配置,回调推流状态和异常上报等。
LFLiveAudioConfiguration
音配配置,配置相关音频信息(音频质量、码率、采样率、声道数)
LFLiveVideoConfiguration
视频配置,配置相关视频的基本信息(视频质量、码率、帧数、分辨率)和应用配置如最大、最小帧率等。
LFVideoCapture
视频管理类,管理视频的输入和输出。同时处理业务需求,如:美颜、亮度、水印等效果,使用了一个第三方GPUImage处理渲染效果。
LFAudioCapture
音频管理,管理音频的输入开关,这一块儿没有多大的定制,应用原声的API即可。
LFH264VideoEncoder,LFHardwareVideoEncoder
视频编码类,分别对应8.0之前和8.0以后的两种设备的视频编码类。都遵守LFVideoEncoding协议,并设置LFStreamSocketDelegate协议给session管理。
LFHardwareAudioEncoder
音频编码类,遵守LFVideoEncoding协议,并设置LFStreamSocketDelegate协议给session管理。
LFFrame
数据信息的基类,作为上传到服务器数据的基本模型。
LFVideoFrame
视频信息,作为上传到服务器视频数据的模型。
LFAudioFrame
音频信息,作为上传到服务器音频数据的模型。
LFLiveStreamInfo
推流信息:推流地址(目前主要应用rtmp推流),流状态,音视频配置信息,异常信息
LFStreamRTMPSocket
数据上传管理类:开关数据上传,回调连接状态和异常,遵循LFStreamSocket协议,并配置LFStreamSocketDelegate给session管理。
LFLiveDebug
调试信息:这个事开发时候的内部标示,主要用于记录调试作用。
LFStreamingBuffer
本地采样:通过本地采样监控缓冲区,可实现相关切换帧率码率等策略
其主要的功能流程如下:
1、其中:LFLiveSession是整个sdk对外主要提供的接口,除了对外提供业务需求接口,而且管理了整个推流过程的不同功能的实现,并添加了一系列的回调接口。
2、通过LFLiveAudioConfiguration,LFLiveVideoConfiguration这两个配置信息作为一个参数,给各个类传值基本码率等基本信息。
3、LFVideoCapture、LFAudioCapture作为LFLiveSession的一个属性,可以管理视频类的输入的输入设备的输出设备,并且通过GPUImage来进行一些图片的滤镜的操作,然后输出,通过代理方法回调给LFLiveSession。
4、LFH264VideoEncoder,LFHardwareVideoEncoder,LFHardwareAudioEncoder是管理音视频编码的类。LFLiveSession接收到经过滤镜处理后的回调后,通过音视频编码类对buffer进行编码,并且在编码结束以后通过代理方法回调给LFLiveSession。
5、LFStreamRTMPSocket是数据上传管理类(目前只用rtmp上传),在LFLiveSession接收到编码结束的回调后,就可以用LFStreamRTMPSocket进行数据上传,并提供网络状态回调和网络异常回调。
6、LFStreamingBuffer相对就比较灵活了,其功能主要是提供了一套根据本地缓冲区在规定时间内的量来回调缓冲区buffer是增加还是减少。如果需要在这方面进行一定的优化可以在回调中实现切换帧率等方法。在LFLiveKit里面是没有具体实现这种策略的后续处理方法,只是回调了增加还是减少的状态。
缺点:每一个buffer数据上传后,没有回调上传的结果。如果可以这样的话,可以根据上传的结果来判断推流端的具体网络状况。自身逻辑可以添加切换线路或者降低码率来实现直播质量的优化。
声道数:单声道的声道数为1个声道,双声道的声道数为2个声道,立体声道的声道数默认是2个声道,立体声道(4声道)的声道数为4个声道。普通食品是两个声道,左右声道。也就是左耳麦和右耳麦,多数视频都是左右混合到一起了,有的配音视频区分左右声道,一边是原声,一边是配音。还有第三种声道形式,就是2.1省道,那个.1只的是低频段环绕立体声。
采样率:音频采样率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真是自然。在当今的主流的采集卡上,采样频率一般分为22.05KHz、44.1KHz、48KHz三个等级。22.05KHz只能达到FM广播的声音品质,44.1KHz则是理论上的CD音质界限,48KHz则更加准确一些。LFLiveKit中默认是44.1KHz。
音频码率(比特率)比特率是指将数字声音由模拟格式转化成数字格式的采样率。比特率表示单位时间(1秒)内传送的比特数bps的速度。通常我们使用kbps(通俗的讲就是每秒钟1000比特)作为单位。128kbps = 磁带(手机立体声MP3播放器最佳设定值,低档MP3播放器最佳设定值)。LFLive默认是96kbps。
LFLiveKit架构简介的更多相关文章
- LoadRunner系统架构简介
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
- crtmpserver的架构简介
crtmpserver的架构简介 一.层 Layers . 机器层 Machine layer . 操作系统层 Operating System Layer This layer is compo ...
- Extjs6官方文档译文——应用架构简介(MVC,MVVM)
应用架构简介 Extjs 同时提供对于MVC和MVVM应用架构的支持.这两个架构方式共享某些概念,而且都旨在沿着逻辑层面划分应用程序代码.每种方法在选择如何划分应用组件上都有其各自的优势. 本指南的目 ...
- Kafka:架构简介【转】
转:http://www.cnblogs.com/f1194361820/p/6026313.html Kafka 架构简介 Kafka是一个开源的.分布式的.可分区的.可复制的基于日志提交的发布订阅 ...
- LoadRunner系统架构简介与运行原理
1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...
- Cortex-M0(+)内核的处理器架构简介
Cortex-M0(+)内核的处理器架构简介 2015年03月02日 16:51:12 阅读数:3158 系统架构 Cortex-M0处理器具有32位系统总线接口,以及32位地址线,即有4GB的地址空 ...
- 【转帖】LoadRunner系统架构简介
LoadRunner系统架构简介: LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP协 ...
- TP 5.0 架构 简介
TP 5.0 架构 简介 thinkphp 5.0 为API开发而设计的的高性能框架,是与以往thinkphp5.0以下版本大不相同的新型框架,病对以颠覆和重构版本,采用全新的架构思想,引入了更多的P ...
- ceph架构简介
ceph架构简介 在测试OpenStack的后端存储时,看到了ceph作为后端存储时的各种优势 ,于是查询资料,总结了这篇ceph架构的博客,介绍了ceph的架构和ceph的核心组件.ceph整体十分 ...
随机推荐
- EventBus In eShop -- 解析微软微服务架构Demo(四)
引言 大家好像对分析源码厌倦了,说实在我也会厌倦,不过不看是无法分析其后面的东西,从易到难是一个必要的过程. 今天说下EventBus,前几天园里的大神已经把其解刨,我今天就借着大神的肩膀,分析下在e ...
- 表连接查询(2-n)
一 概述 1 背景 理论上将全部数据放到同一张表中很难实现,实际上即使实现了,表也很庞大,很冗杂,不便于查询与维护,因此将不同的数据存放到不同的表中,需要时连接各表进行查询. 2 执行过程 两张表进行 ...
- Charles抓包工具安装与配置
在实际开发中,我们需要时常抓取线上的请求及数据,甚至是请求的html文档,js,css等静态文件来进行调试.在这里,我使用charles来进行以上操作.但是呢,charles需要进行一系列配置才能达到 ...
- tab切换实现方式2
tab切换实现方式2: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...
- C++基础之引用与指针的区别与联系、常引用使用时应注意的问题
什么是引用? 引用就是对变量起一个别名,而变量还是原来的变量,并没有重新定义一个变量.例如下面的例子: #include<iostream> using namespace std; ...
- web前段学习2017.6.13
CSS---表现层,修饰和表现html文档,为了解决结构层和表现层分离的问题. 通过CSS极大的提高了工作效率,方便工作人员维护和管理CSS:层叠样式表,目前用的最广泛的css版本为css2,最新版本 ...
- VB6之HTTP服务器的实现
之前用VBS写过一个,效率和支持比较low,这次闲着没事用VB重写了一次. 当前的实现版本仅支持静态文件的访问(*.html之类),支持访问方式为GET,HTTP状态支持200和404. 两个文件,一 ...
- oracle linux 7.3 下用dtrace 跟踪 mysql-community-server-5.6.20
第一部分:oracle linux 7.3 dtrace 安装: http://public-yum.oracle.com/ 内核升极到 [root@server1 SPECS]# uname - ...
- Vuejs——Vue生命周期,数据,手动挂载,指令,过滤器
版权声明:出处http://blog.csdn.net/qq20004604 目录(?)[+] 原教程: http://cn.vuejs.org/guide/instance.html htt ...
- .NET Core 事件总线,分布式事务解决方案:CAP
背景 相信前面几篇关于微服务的文章也介绍了那么多了,在构建微服务的过程中确实需要这么一个东西,即便不是在构建微服务,那么在构建分布式应用的过程中也会遇到分布式事务的问题,那么 CAP 就是在这样的背景 ...