转载请注明出处: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等等协议,下面我们用一个表格来看看他们的不同
名字 | 全称 | 协议 | 原理 | 延时 | 目前 |
---|---|---|---|---|---|
RTMP | Real Time Messaging Protocol | 长连接TCP | 每个时刻收到的数据立即转发 | 1~3秒 | 国内首选的直播协议、国外一般CDN已经不支持了、并且开源的librtmp库,服务端有nginx-rtmp插件 |
HLS | Http Live Streaming | 短连接HTTP | 集合一段时间数据,生成ts切片文件更新m3u8 | >10秒 | 手机浏览器天然直播,常用于分享 |
HTTP-FLV | RTMP 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的时候,就会认为是连贯的,此现象称之为视觉暂留。并且当帧速达到一定数值后,再增长的话,人眼也不容易察觉到有明显的流畅度提升了。 |
分辨率 | 图片的长度和宽度,即图片的尺寸 |
码率 | 把每秒显示的图片进行压缩后的数据量在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。 |
CDN | CDN的全称是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->
输入下面的地址:
这样我们就实现了最简单的推拉流。大家不妨动手试下。
-
直播优化
- 首屏秒开
- 动态追帧
在当下的直播,用户体验为王道,谁家的直播在弱网的情况下依然能流程的播放,这就是属于专业的音视频同志们来搞了。
三:其他功能
在当下的直播,附加了很多跟用户互动功能,不过大家的做法都差不多,竟然UI长的都差不多一样,就跟韩国美女是的.
- 礼物系统
- 弹幕系统
- 聊天系统
- 人脸识别
- 游戏互动
- 连麦互动
- 美颜功能
有上述功能,才叫直播,但是直播的优化路跟赚钱路应该还有很长,现在的商业模式应该是只有广告跟用户礼物这些,但是远不及高额的流量费、主播费用跟CDN云费用,除非你找一个好爹,不缺钱,比如xxx直播。
四:实现直播:
如何快速实现直播呢,就是实现第三方,有些第三方已经把上面的所有功能都封装好了,只需调调API就可以快速实现一个直播,但是如果你要自己实现一个直播,难度可想而知,并且要花很多钱。下面两幅图我们可以看出自己实现跟使用第三方的区别。
开发 | OpenGL | 摄像头相关知识 | C语言 | JNI | 音视频 | 优点 | 缺点 |
---|---|---|---|---|---|---|---|
独立开发 | 困难 | 困难 | 困难 | 困难 | 困难 | 深知直播原理,学到知识较多 | 困难重重,需要学习的知识较多,学习成本高,坑较多,开发周期长 |
集成第三方 | 已集成 | 已集成 | 已集成 | 已集成 | 已集成 | 开发容易,很快上手 | 技术受制于人,用户受制于人 |
开发 | 时间周期 | 人数 | 金钱 |
---|---|---|---|
独立开发 | 6个月以上 | 10-15人 | **** |
集成第三方 | 2个月 | 5人 | **** |
上述图标直供参考,统计并不准确。
五:提供技术支持的公司
在直播这么火的当下,怎么可以少了这些提供技术的公司,不过这些公司一般SDK是不收费,他们可能会收取CDN已经云存储的费用,具体情况可能需要问他们客服了。
- 金山
- 融云
- 腾讯云
- 阿里云
- 七牛云
- 乐视云
- 趣拍云
以上这些公司都提供技术支持,如果大家要做直播,不妨去他们的官方了解一下,下载一下他们的DEMO来玩玩。
六:吐槽
不知何时起,就算在华丽的互联网,在华丽的直播,也离不开数据造假。据说XXX直播99%都是假用户,有些直播刷的礼物也是假的,用假土豪带来一个真土豪,其实也是赚的,因为假土豪刷礼物,只需要改一句代码而已,但是真土豪那可真是人民币啊。假如99%都是假用户,那直播间有100个人,那真主播的自演自看。
七:其他
接下来的日子里,我可能继续写几篇博客,来用第三方做一个完整直播,希望大家关注。以上内容纯属个人简介,小弟不才,大神勿喷。
网友评论