如何快递打造直播----概念篇(一)

转载请注明出处:http://blog.csdn.net/xiaoyuan511

在移动互联网的大潮下,手机软硬件的快速发展,直播与短视频成为当下一个比较潮的名词,不管吃饭、还是游戏都可以直播,甚至xxxx都要与网友分享,所以视频识别内容的技术还是需要的,据说谷歌已经实现了这项技术、把这项技术应用到直播在好不过了、那么如何快速打造一个直播呢,来抢占互联网这块大蛋糕呢!那我们先说一下直播的一些知识。

一、概述

互联网每过一段时间,都会有行业的爆发,比如2016年就是直播的一个元年,上面的图就显示出了直播到底特么有多火。各种直播如雨后春笋一样冒了出来,说有上千家不足为过,气势就如当年的千团大战一样、直到现在千播大战还在继续,谁有钱就能笑到最后,谁没钱就得退出历史的舞台,成为昙花一现。

说到直播的鼻祖,应该属于当年的六间房、9158这样的直播,YY都是后起之秀。本来YY就是一个游戏语音的工具,活生生让用户改变成了直播间,成为了pc端直播的霸主,让YY赚的睡觉都笑出了声。但是在移动端崛起的今天,手机端已经不在是YY的领地,各种直播多的都能你128G的手机不够装下这些APP。主播的身价也水涨船高,几千万的大主播,听着都想转行了,都说直播养活了整个东北三省,这句话说的挺对的,东北人的搞笑细胞确实挺多的,但是总是双击666,听着都难受了。对了,2016下半年-2017年,是共享经济的时代,摩拜、ofo各种单车袭来、但是这种方便人们出行的事,希望不要成为人民的照妖镜。互联网思维就是很厉害,自行车厂商自行车积压卖不出去,把它们扔到大街上,让人们1元骑行,这就是互联网的思维啊。就能创造几百亿的美金啊。OK !扯淡完毕!

二、知识点

说到直播,不得不说下面几个知识点

  • 直播概念

直播这个概念,其实就是什么叫直播、直播概念无法就是推流端(采集端 PC,手机)、观众端(拉流端、PC、手机)有两款开源的软件是非常好、一个叫OBS是一个推流断、很多主播都使用、一个叫VLC是一个拉流端,大家都在PC端下载试试!一会咱们在说推拉流地址的问题。

  • 直播技术

直播也有很多协议,国内常见公开的协议有RTMP HLS HTTP-FLV等等协议,下面我们用一个表格来看看他们的不同

名字全称协议原理延时目前
RTMPReal Time Messaging Protocol长连接TCP每个时刻收到的数据立即转发1~3秒国内首选的直播协议、国外一般CDN已经不支持了、并且开源的librtmp库,服务端有nginx-rtmp插件
HLSHttp Live Streaming短连接HTTP集合一段时间数据,生成ts切片文件更新m3u8
10秒
手机浏览器天然直播,常用于分享
HTTP-FLVRTMP Over Http长连接HTTP同RTMP,使用HTTP协议1-3秒成熟度高、游戏直播首选、从延迟情况看,这个协议比RTMP协议有优势
  • 直播协议

上图表中也有很多协议,一般现在的直播都使用的RTMP协议

  • 直播编码

要实现推流,肯定要编码,编码分为硬编码跟软编码,咱们也用一个表来看看软硬编码的不同

编码方式特点区别
硬编码通过调用Android系统自带的Camera录制视频,实际上是调用了底层的高清编码硬件模块,也即显卡,不使用CPU,速度快1:功耗低,执行效率高 2:因不同型号的芯片对编解码的实现会有不同,并不能保证编解码的效果与其它机型一致或者不会出错,可控性比较差
软编码使用CPU进行编码,如常见C/C++代码,一般编译生成的二进制都是的,速度相对较慢。例如使用Android NDK编译H264生成so库,编写jni接口,再使用java调用so库。1:兼容性强,对系统版本要求比较低,出错少;2:解码方面,软解的色彩一般会比硬解的色彩好;3:编解码可操作空间比较大,自由度高 4:吃CPU,消耗会比较大
  • 直播数据流

数据流一般分为I帧 P帧 B帧,如下图所示:

解释
I帧你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(关键帧)
P帧解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)
B帧帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况)。换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面,B帧压缩率高,但是编解码时会比较耗费CPU,而且在直播中可能会增加直播延时,因此在移动端上一般不使用B帧。

一般在移动端只需要解码I跟P帧,就可以解析出画面。B帧一般情况会忽略掉。

  • 直播术语

在直播中,有几个术语我们需要知道:

名词解释
帧率每秒显示的图片数。影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。由于人类眼睛的特殊生理结构,如果所看画面之帧率高于16的时候,就会认为是连贯的,此现象称之为视觉暂留。并且当帧速达到一定数值后,再增长的话,人眼也不容易察觉到有明显的流畅度提升了。
分辨率图片的长度和宽度,即图片的尺寸
码率把每秒显示的图片进行压缩后的数据量在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
CDNCDN的全称是Content Delivery Network,即内容分发网络。通俗不同地区的用户连接不同的下载点,以达到加速的效果。就跟快递一样,送到离你最近的配送地点

现在可能大多数码率都是动态码率,并不是写死的,跟网络的流畅度,动态调节码率。

  • 直播业务逻辑

所有的软件都离不开业务,直播也不列外,直播就是存主播的一些信息等等。下!面一副图直接就能表现出业务逻辑。

我们可以看到采集端一些功能,比如从业务服务器获取推流地址就是音视频采集、编码、推流、美颜,推到云上进行CDN分发,拉流端也是从业务服务器获取到拉流地址,解码、进行播放,并且可以将RTMP转HLS进行H5播放。

  • 直播地址

如果想在本地实现一个rtmp推拉流很简单,首先在我们的电脑安装nginx,在nginx.conf最后面配置一个rtmp模块
如下图所示:

然后执行nginx -s reload,我们继续安装brew install ffmpeg安装成功后,我们可以执行一下
ffmpeg -re -i /Users/xiaoyuan/Desktop/test.mov(本地视频的路径) -vcodeclibx264 -acodecaac -f flv rtmp://localhost:7160/rtmplive/room我们可以用VLC看一下,在file->open network-> 输入下面的地址:

rtmp://localhost:7160/rtmplive/room

这样我们就实现了最简单的推拉流。大家不妨动手试下。

  • 直播优化

    • 首屏秒开
    • 动态追帧
      在当下的直播,用户体验为王道,谁家的直播在弱网的情况下依然能流程的播放,这就是属于专业的音视频同志们来搞了。
三:其他功能

在当下的直播,附加了很多跟用户互动功能,不过大家的做法都差不多,竟然UI长的都差不多一样,就跟韩国美女是的.

  • 礼物系统
  • 弹幕系统
  • 聊天系统
  • 人脸识别
  • 游戏互动
  • 连麦互动
  • 美颜功能

有上述功能,才叫直播,但是直播的优化路跟赚钱路应该还有很长,现在的商业模式应该是只有广告跟用户礼物这些,但是远不及高额的流量费、主播费用跟CDN云费用,除非你找一个好爹,不缺钱,比如xxx直播。

四:实现直播:

如何快速实现直播呢,就是实现第三方,有些第三方已经把上面的所有功能都封装好了,只需调调API就可以快速实现一个直播,但是如果你要自己实现一个直播,难度可想而知,并且要花很多钱。下面两幅图我们可以看出自己实现跟使用第三方的区别。

开发OpenGL摄像头相关知识C语言JNI音视频优点缺点
独立开发困难困难困难困难困难深知直播原理,学到知识较多困难重重,需要学习的知识较多,学习成本高,坑较多,开发周期长
集成第三方已集成已集成已集成已集成已集成开发容易,很快上手技术受制于人,用户受制于人
开发时间周期人数金钱
独立开发6个月以上10-15人
集成第三方2个月5人

上述图标直供参考,统计并不准确。

五:提供技术支持的公司

在直播这么火的当下,怎么可以少了这些提供技术的公司,不过这些公司一般SDK是不收费,他们可能会收取CDN已经云存储的费用,具体情况可能需要问他们客服了。

  • 金山
  • 融云
  • 腾讯云
  • 阿里云
  • 七牛云
  • 乐视云
  • 趣拍云

    以上这些公司都提供技术支持,如果大家要做直播,不妨去他们的官方了解一下,下载一下他们的DEMO来玩玩。

六:吐槽

不知何时起,就算在华丽的互联网,在华丽的直播,也离不开数据造假。据说XXX直播99%都是假用户,有些直播刷的礼物也是假的,用假土豪带来一个真土豪,其实也是赚的,因为假土豪刷礼物,只需要改一句代码而已,但是真土豪那可真是人民币啊。假如99%都是假用户,那直播间有100个人,那真主播的自演自看。

七:其他

接下来的日子里,我可能继续写几篇博客,来用第三方做一个完整直播,希望大家关注。以上内容纯属个人简介,小弟不才,大神勿喷。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小_源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值