美文网首页
直播学习总结

直播学习总结

作者: 白水灬煮一切 | 来源:发表于2019-07-23 19:06 被阅读0次

第三方服务:

七牛云:https://www.qiniu.com/?utm_campaign=baiduSEM 

网易云:http://vcloud.163.com/live#bdpc

阿里云:

视频参数

帧率: 表示一秒播放的视频中有多少个帧,单位是FPS(Frame Per Second)以及Gop(表示多少秒一个I帧),人眼能接受的视频连续播放的最小帧率为25帧/秒。

分辨率:单位英寸中所包含的像素点数,影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。

码率:编码器每秒编出的数据大小,单位是kbps,比如800kbps代表编码器每秒产生800kb(或100KB)的数据。

视频参数

音频参数

采样频率:即取样频率, 指每秒钟取得声音样本的次数。采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多。

采样值:用来衡量声音波动变化的一个参数,也可以说是声卡的分辨率。它的数值越大,分辨率也就越高,所发出声音的能力越强。

声道数:即声音的通道的数目。常有单声道和立体声之分,单声道的声音只能使用一个喇叭发声(有的也处理成两个喇叭输出同一个声道的声音),立体声可以使两个喇叭都发声(一般左右声道有分工) ,更能感受到空间效果,当然还有更多的通道数。

码率 :比特率也叫码率,指音乐每秒播放的数据量

本文主要使用的三个技术:

1、采集、美颜LFLiveKit框架

2、推流:LFLiveKit这个框架集成了以下框架:

GPUImage(本身集成了AVFoundation框架):美颜+滤镜+水印

X264框架:H264编码

FFempeg:ACC编码

RTMP协议:推流

3、播放:ijkplayer内部集成了以下框架:

FFempeg:音视频解码

AVFoundation:视频播放

服务器:nginx+rtmp+ffmpeg

![直播APP架构.png](https://img.haomeiwen.com/i2872842/b3c158c6b59616c5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

GPUImage对AVFundation进行了一层封装,所以GPUImage框架已经集成了视频的录制

![屏幕快照 2018-06-07 上午10.17.55.png](https://img.haomeiwen.com/i2872842/1ede546841359037.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

![屏幕快照 2018-06-07 上午10.17.55 2.png](https://img.haomeiwen.com/i2872842/e0b1ce37099752bb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

HLS 也有它的优点:

>数据通过 HTTP 协议传输,所以采用 HLS 时不用考虑防火墙或者代理的问题。

>使用短时长的分片文件来播放,客户端可以平滑的切换码率,以适应不同带宽条件下的播放。

>HLS 是苹果推出的流媒体协议,在 iOS 平台上可以获得天然的支持,采用系统提供的 AVPlayer 就能直接播放,不用自己开发播放器。

RTMP 优缺点:

RTMP 协议时,从采集推流端到流媒体服务器再到播放端是一条数据流,因此在服务器不会有落地文件。这样 RTMP 相对来说就有这些优点:

>延时较小,通常为 1-3s。

>基于 TCP 长连接

因此业界大部分直播业务都会选择用 RTMP 作为流媒体协议。通常会将数据流封装成 FLV 通过 HTTP 提供出去。但是这样也有一些问题需要解决:

>iOS 平台没有提供原生支持 RTMP 或 HTTP-FLV 的播放器,这就需要开发支持相关协议的播放器。(ijkplayer框架很好支持了RTMP协议,包括音视频解码)

推送服务器流程:

通过AVCaptureSession这么一个捕捉会话,指定两个AVCaptureDevice 也就是iOS的摄像头和麦克风,获取个原始视频和音频,然后需要进行个H.264的视频编码和AAC的音频编码,再将编码后的数据整合成一个音视频包,通过rmtp推送到nginx服务器

采集、美颜、推流有LFLiveKit,

拉流播放有IJKMediaFramework(ijkplayer这个播放器框架集成了拉流、音视频解码、视频播放等强大功能)

直播整个技术 流程:

GPUImage 进行音视频的采集 + 美颜处理 ——>音视频原生文件包 ——>ffempeg进行音频ACC编码处理+X264进行视频H264编码处理 + 打包 ——>libremp框架进行RTMP协议推流 ——>通过ijkplayer框架进行播放(集成音频AudioTooBox和视频VideoToolBox的音视频解码+视频播放等功能)

**数据采集原理:**

**下面将利用** **ios** **上的摄像头,进行音视频的数据采集,主要分为以下几个步骤:**

*  音视频的采集,ios 中,利用 AVCaptureSession和AVCaptureDevice 可以采集到原始的音视频数据流。

*  对视频进行 H264 编码,对音频进行 AAC 编码,在 ios 中分别有已经封装好的编码库来实现对音视频的编码。

*  对编码后的音、视频数据进行组装封包;

*  建立 RTMP 连接并上推到服务端。

*  ps:由于编码库大多使用 c 语言编写,需要自己使用时编译,对于 ios,可以使用已经编译好的编码库。

*  **x264****编码:**[https://github.com/kewlbear/x264-ios](https://link.jianshu.com/?t=https://github.com/kewlbear/x264-ios)(复制此链接到浏览器打开)

*  **faac****编码:**[https://github.com/fflydev/faac-ios-build](https://link.jianshu.com/?t=https://github.com/fflydev/faac-ios-build)(操作同上)

*  **ffmpeg****编码:**[https://github.com/kewlbear/FFmpeg-iOS-build-script](https://link.jianshu.com/?t=https://github.com/kewlbear/FFmpeg-iOS-build-script)(操作同上)

*  关于如果想给视频增加一些特殊效果,例如增加滤镜等,一般在编码前给使用滤镜库,但是这样也会造成一些耗时,导致上传视频数据有一定延时。

iOS中的支持的视频格式:mp4、m4v、m4a、3gp、3g2

                          音频格式:caf、wav、aif、aifc、amr、mp3、ac3、eac3

                          图片:jpg、jpeg、dng、heic、avci、heif、tiff

  //下面是视频格式(用来转换视频格式)

    AVFileTypeQuickTimeMovie //.mov and .qt

    AVFileTypeMPEG4//.mp4

    AVFileTypeAppleM4V//.m4v

    AVFileTypeAppleM4A//.m4a

    AVFileType3GPP//.3gp, .3gpp, and .sdv NS_AVAILABLE(10_11, 4_0);

    AVFileType3GPP2//.3g2, .3gp2 NS_AVAILABLE(10_11, 4_0);

    AVFileTypeCoreAudioFormat//.caf NS_AVAILABLE(10_7, 4_0);

    AVFileTypeWAVE//.wav, .wave, and .bwf NS_AVAILABLE(10_7, 4_0);

    //下面是音频格式(用来转换音频格式)

    AVFileTypeAIFF//.aif and .aiff NS_AVAILABLE(10_7, 4_0);

    AVFileTypeAIFC//.aifc and .cdda NS_AVAILABLE(10_7, 4_0);

    AVFileTypeAMR//.amr NS_AVAILABLE(10_7, 4_0);

    AVFileTypeMPEGLayer3//.mp3 NS_AVAILABLE(10_9, 7_0);

    AVFileTypeSunAU//.au and .snd NS_AVAILABLE(10_9, 7_0);

    AVFileTypeAC3//.ac3 NS_AVAILABLE(10_9, 7_0);

    AVFileTypeEnhancedAC3//.eac3 NS_AVAILABLE(10_11, 9_0);

    //下面是图像的格式(用来转换图片格式)

    AVFileTypeJPEG//.jpg or .jpeg NS_AVAILABLE(10_13, 11_0);

    AVFileTypeDNG//.dng NS_AVAILABLE(10_13, 11_0);

    AVFileTypeHEIC//.heic NS_AVAILABLE(10_13, 11_0);

    AVFileTypeAVCI//.avci NS_AVAILABLE(10_13, 11_0);

    AVFileTypeHEIF//.heif NS_AVAILABLE(10_13, 11_0);

    AVFileTypeTIFF//.tiff or .tif NS_AVAILABLE(10_13, 11_0);

  */

七牛云使用注意点:

1、网络不好中断内置了自动重连功能,但是默认不开启,需要手动开启重连功能,而且自动重连次数上限目前设定为 3 次!——>三次重连仍未连上,则会触发一个网络异常代理回调,我们可以在代理里进行操作处理。

2、弱网优化:

1>链接中断会自动 重连三次。(默认关闭,要手动打开)

2>网络切换block回调,自己根据需求做处理。该属性未被初始化赋值,则 SDK 内部出于节省用户移动网络流量的目的,会自动断开推流!所以需要自己监听进行重连!

3>自适应码率模块 和 动态帧率模块  (默认情况下,这两个模块处于关闭状态)

4>QUIC 推流:在 弱网情况下可以采用UDP推流 (优化的UDP保证丢包)

3、美颜功能:美颜、美白、红润

4、进入后台推一张图片,会 持续为您推送该图片

5、可以录屏—>iOS 10 新增的录屏推流 (ReplayKit Live) 功能,App 中添加一个类型为 Broadcast Upload Extension 的新 Target,

6、七牛云的播放端是 HLS 及 RTMP 播放 SDK,因此可以播放直播以及点播

7、使用 IP 播放,不能使用域名

8、可播放的格式mp4、H264、H265、HLS 、HTTP-FLV点播 /  AAC、MP3 ,其中mp4格式可以进行缓存到本地!

相关文章

  • 直播学习总结

    第三方服务: 七牛云:https://www.qiniu.com/?utm_campaign=baiduSEM 网...

  • 直播APP常用动画效果

    介绍 记录、总结开发遇到一些问题,大家一起交流学习。这次带来,对直播APP的常用动画总结。直播Live 效果展示 ...

  • 直播协议的学习总结

    直播应用中,RTMP和HLS基本上可以覆盖所有客户端观看,HLS主要是延时比较大,RTMP主要优势在于延时低。 一...

  • 关于直播、CDN、直播协议的学习总结

    视频是怎么组成的 任何一个视频 Video 文件,从结构上讲,都是这样一种组成方式: 由图像和音频构成最基本的内容...

  • #积极学习(100)

    今天李老师连续直播满300天,早上做了简单回顾总结,晚上将做“积极学习高手之夜”庆祝活动,直播计划4个小时。 1、...

  • 2020-11-29

    第一堂线上课学习总结 随着六段有效演讲直播课程的不断推进,我们经历了从自己直播到听同期伙伴们的直播课程,在11月...

  • 直播APP的性能优化-礼物篇

    介绍 记录、总结开发遇到一些问题,大家一起交流学习。这次带来,对直播APP性能优化的总结,以QA的形式总结。 欢迎...

  • 数据分析之餐饮SaaS商业模式

    接下来这篇文章,是最近一周和小伙伴们进行的读书活动直播总结内容,本文是大家学习后的第二次直播总结;对于咱们做数据分...

  • 0825 直播反馈的学习总结

    一. 每日一段写作的问题与修改 原稿: Many people have formed an unrealisti...

  • 思源的币乎秘籍

    《思源,你凭什么在币乎崛起》听课总结 3月28日直播 855人观看直播 主讲人:何思源 币圈奇女子,持续学习者。 ...

网友评论

      本文标题:直播学习总结

      本文链接:https://www.haomeiwen.com/subject/lswalctx.html