分享

直播app技术实现难度在哪?需要什么样技术人才,还有就是服务器带宽要求及成本?

 空气中的小鱼 2017-05-26
技术层面:
技术相对都比较成熟,设备也都支持硬编码。IOS还提供现成的 Video ToolBox框架,可以对摄像头和流媒体数据结构进行处理,但Video ToolBox框架只兼容8.0以上版本,8.0以下就需要用x264的库软编了。Andriod 可以考虑用 ffmpeg 软编。

github上有现成的开源实现,推流、美颜、水印、弹幕、点赞动画、滤镜、播放都有,技术其实不是很难,而且现在很多云厂商都提供SDK,招几个懂行经验丰富的就可以,并不必须是流媒体人才。

链接:
如何搭建一个完整的视频直播系统? - 网络主播

映客、Periscope、花椒等直播APP点赞动画:
GitHub - singer1026/DMHeartFlyAnimation: 直播点赞动画

Android开源弹幕:
GitHub - Bilibili/DanmakuFlameMaster: Android开源弹幕引擎·烈焰弹幕使 ~ JNI source:Bilibili/NativeBitmapFactory

IOS开源弹幕: 
GitHub - panghaijiao/HJDanmakuDemo: A high performance danmaku engine for iOS

七牛云移动端推流开源SDK:
GitHub - pili-engineering/PLCameraStreamingKit: Pili RTMP Streaming SDK for iOS, H.264 and AAC hardware encoding supported. Camera and Microphone as input source.

基于Android手机推流:
GitHub - begeekmyfriend/yasea: RTMP streaming client in pure Java for Android for those who hate JNI.

基于IOS的图像处理:
GitHub - BradLarson/GPUImage: An open source iOS framework for GPU-based image and video processing

完整的基于IOS手机直播:
GitHub - songsmith/LiveVideoCoreSDK

IOS-推流端的 RTMP库:
GitHub - songsmith/ios-librtmp: For PushSDK

OBS-PC端主播推流工具,斗鱼等游戏直播都在用
GitHub - jp9000/obs-studio: OBS

RTMP直播可以用nginx-rtmp
GitHub - arut/nginx-rtmp-module: NGINX-based Media Streaming Server

开源播放器也很多,ffplay、jwplayer、ijkplayer等等,我就不一一给你发了,哈哈
https://github.com/Bilibili/ijkplayer

其实最难的难点是提高首播时间、服务质量即Qos,如何在丢包率20%的情况下还能保障稳定、流畅的直播体验,需要考虑以下方案:

1. 为加快首播时间,收流服务器主动推送 GOP 至边缘节点,边缘节点缓存 GOP,播放端则可以快速加载,减少回源延迟

2. gop丢帧,为解决延时,为什么会有延时,网络抖动、网络拥塞导致的数据发送不出去,丢完之后所有的时间戳都要修改,切记,要不客户端就会卡一个 gop的时间,是由于 dts 和 pts 的原因,或者播放器修正 dts 和 pts 也行(推流端丢gop更复杂,丢 p 帧之前的 p 帧会花屏)

3. 纯音频丢帧,要解决音视频不同步的问题,要让视频的 delta增量到你丢掉音频的delta之后,再发音频,要不就会音视频不同步 

4. 源站主备切换和断线重连

5. 根据TCP拥塞窗口做智能调度,当拥塞窗口过大说明节点服务质量不佳,需要切换节点和故障排查

6. 增加上行、下行带宽探测接口,当带宽不满足时降低视频质量,即降低码率

7. 定时获取最优的推流、拉流链路IP,尽可能保证提供最好的服务

8. 监控必须要,监控各个节点的Qos状态,来做整个平台的资源配置优化和调度

9. 如果你家产品从推流端、CDN、播放器都是自家的,保障 Qos 优势非常大

10. 当直播量非常大时,要加入集群管理和调度,保障 Qos

11. 播放端通过增加延时来减少网络抖动,通过快播来减少延时

2016-05-27 补充:
我先后调研了七牛云、金山云、乐视云、腾讯云、百度云、斗鱼直播伴侣 推流端,功能几乎都是一样的,没啥亮点,不同的是整个直播平台服务差异和接入的简易性。后端现在 RTMP/HTTP-FLV 清一色,APP挂个源站直接接入云厂商或CDN就OK。直播要做好真心不易,楼主也做的不是很好,只是在不断的摸索、改进和优化,关于如何选择接入的云厂商或CDN,哪个稳定选哪个!

带宽成本:

粗略计算,斗鱼 TV 的在线人数超过 1000 万 +,战旗 TV 在在线人数约 500 万 +,龙珠在线人数约 400 万 +,虎牙在线人数约 100 万 +(统计于 2016 年 2 月 18 日,以各大节目在线人数人工相加得出,并未统计全部节目)。

直播平台的带宽成本费用通常取带宽峰值月结,当月 100 万最高同时在线人数,对应消耗带宽 1.5T,月结费用 3000 万人民币,20块钱1M的样子,根据直播方需求不同,价格也不一样,质量越好的就越贵。


PS:此计算方式来源于网络

可以算出各家在带宽方面每年需要付出的成本,斗鱼 TV 为 3 亿人民币,战旗 TV 为 1.5 亿人民币,龙珠为 1.2 亿人民币,虎牙为 3000 万 + 人民币。


运营层面:
正是因为现在做这个的太多了,所以你要运营和推广,这个就比较烧钱了,反正我现在知道的一些做移动直播、游戏直播、秀场直播的A轮至少得上千万。

用户体验:
离不开CDN和云厂商,他们会帮你解决大部分的技术问题,不流畅、卡顿、花屏、带宽不够、攻击、用户体验不好等一系列问题,还给你提供免费技术支持,上面提到的那些技术方案就是云厂商和CDN来帮你解决的。
张腾 ,欢迎同行交流~
哈哈,刚刚答完题就看到了这个问题,这可是问对人了,我们就是给**公司做全面技术服务的,今天有点累了,就把我刚刚写的答案的一部分贴上来,希望对你有帮助!
--------------------------------------------------分开----------------------------------------------------------------
火热的游戏直播行业,为什么优酷土豆爱奇艺这样视频站没有抓住机会? - 张腾的回答
一,视频直播与视频点播
很多人凭着第一印象,觉得两个名词里面都有视频,就认为两者实现的方式和技术要点是一样的,众多视频点播网站巨头(题主所说的:优酷,土豆,新浪等)都在探索视频直播的道路上吃了大亏,也是因为对两者之间区别的认识不够深刻。

视频点播对于视频本身的要求是:高质量(高码率)和流畅(低卡顿,即加载时间)
视频直播对于视频本身的要求是:清晰,流畅,低延时(无互动,不直播,把延时控制在3秒以内,甚至1秒内意义重大,这一点很多直播平台还都没有认识到)。

注意到区别了?低延时,也就是实时性,差之毫厘谬以千里。
为什么低延时在传统视频点播平台运营商那里会遇到大麻烦,需要讲一下现在所有视频服务的骨架CDN的前世今生,请仔细阅读下面的文字:


随着Internet的迅速发展,用户数量和信息量快速增长,为了从技术上全面解决网络带宽小,用户访问量大,网点分布不均匀等问题,1998年诞生了解决问题的方案,即CDN(内容分发网络)。

CDN技术采用了分布式缓存/复制、负载均衡、流量工程和客户端重定向等技术,设立若干分支节点,尽量将用户请求的内容存储到距离用户“最后一公里”的边缘节点上,在Internet上构筑一个地理上分布的内容分送网络,将信息资源向网络边缘推近,用户可以在 “最近”的位置快速访问到所需的内容,继而提高了终端用户的访问速度和服务质量。


CDN整体框架的顶层设计是为了解决文件的分发和传输问题架设的,系统起初是服务于文件而非实时的流媒体数据。在处理流媒体数据时,现有方案仍沿用了传统的分发原则与模式,无法满足互动直播高质量低延时的要求。



读到这里,你仿佛知道了他们之间的差异。但是,如果你认为CDN是现在主要的技术瓶颈,那你就错了,CDN只是个基础,更纠结的还在下面

二,流媒体传输协议
传输层协议主要讲下面三种

1.TCP

TCP为点对点的协议,虽然能保证了数据传输的可靠性,但是对服务器资源耗费较大,在数据流大的场合难以保证数据流传输的实时性。

2.UDP

UDP为不可靠传输协议,不需要维护连接状态,也不认为每个数据包都必须到达接受端,因此网络负荷比TCP小,传输速度也要比TCP快;但在网络越拥挤时,越有更多的数据包丢失。

3.RTMP

RTMP一个专门为高效传输视频,音频和数据而设计的协议。它通过建立一个二进制TCP连接或者连接HTTP隧道实现实时的视频和声音传输。

现在传统的视频直播都使用的RTMP传输协议,因为不管是UDP还是TCP协议,都不适用于流媒体的实时传输。但是使用RTMP+CDN或云的方案也存在根本性的缺陷。因为不管事RTMP还是CDN, 都源自服务于文件传输的方案,问题主要有以下几个

a:现在做的最好的用RTMP来搭建视频直播方案,其延时也最多能达到5秒左右,实际上,如果要保证视频的流畅(低卡顿)和清晰(高码率),5秒的延时都很难达到,有的方案甚至在7-8秒,直播的很大一部分意义在与互动和实时性,互动对于延时的要求,最佳时间是在2-3内,再长就会体验很差(大家可以自己试一下),而对于很多行业,直播的要求甚至要在半秒以内才有意义,这是现有方案完全无法满足的。

b:对于客户资源的最大程度利用,这一点涉及公司的方案设计,不再详述,有兴趣的可以私信。

c:CDN节点完全属于盲点,直播流浪涌入,一旦某个节点出现波动,只能被动地让用户承担极差用户体验的风险(卡顿,模糊),而对于网络状况本身却处于黑箱状态,不可管,不可控,受制约严重。我相信这一点有相关运维经验的知友都深有感触。

d.e.f....太多字了不写了


我想上面的答案应该能让题主明白,为什么优酷这种巨头做不好“一点微薄的工作“

简而言之

1.运营能力不能代表技术开发水平

2.流媒体实时传输这块领域太窄,不要说优酷,全世界真正深入研究的公司或团体,据我所知,除了我们公司还有一家美国的公司在做,不过他们和我们做的方向还是不一样,这是后话了。

3.互联网节奏太快,很多巨头的想法是,加大投入,缩短研发周期,立竿见影地把流媒体直播这个坑填平,但他们没有想到的是,一个坑后面还有无数个坑,坑里面还有坑,甚至方向可能都错了,赶时间赶进度的初衷反而被这种浮躁的心态给牺牲了。

---------------------------------------------

刚刚又仔细看了一遍题目,答案好像只回答了题主的一部分疑问,等有时间把坑填满!

郑岐 ,网易公司-IM-直播-短信-专线电话
一、回答这个问题,我们先看看一个直播产品的功能模块,根据功能模块才好分析所需要的技术人才和判断难点。
1、从推流到拉流的通道,这当中包括数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示整个流程;因此,需要懂流媒体处理的技术;
2、内容复制分发,也就是cdn这块,服务器收集到主播视频后再通过在全国各地的节点将视频内容分发到终端。cdn是直播中最贵的,技术难度较高,一般都是采用第三方的;如果自己做的话,也需要和cdn厂商对接有经验的技术;
3、美颜:美颜涉及到复杂的算法和图像处理技术,美颜起初是用于图片上,目前图片上的美颜技术已经较为成熟,然而在视频上的美颜还需要很长的路要走。这里就需要图像处理算法工程师;
4、聊天室:我们在看直播的时候,还可以在聊天室中聊天,这是应用了im及时通讯中的聊天室功能,聊天室和群聊的区别是,只有用户进入聊天室才能发言,看到好友,退出聊天室后就类似于退群,就收不到消息,看不到用户,看不到聊天记录了。因此,聊天室这块需要在即时通讯方面经验丰富的工程师;
5、服务器:对于直播产品来说,流量变化是非常大的,一天中直播的流量高峰期基本在晚上,有时候搞个活动,或周杰伦跑来直播了,那这个时候流量可能是平时的几十倍。流量忽高忽低对服务器自然提出了很高的要求。

二、难点
从客户终端来看,一个简单的直播产品,在技术底层的操作确实如此之多,每一项技术都是一个行业。
1、开发量大:上面已经提了最基本的几项开发,每一项开发工作都是很耗费时间的;
2、技术要求高:以聊天室举例,聊天室看似只是直播中的一个小功能,然而对消息处理做不好,就直接导致闪退、卡顿等问题。尤其是在一个聊天室中用户并发量上万的时候,想想1s种要送多少礼物,多少点赞,多少发言,在这种高并发的场景,对im的要求极其高;
3、烧钱,以cdn为例,目前企业自建的平均成本是1.3万元/G/月,刚开始用第三方会便宜一些。但是,可以看看YY的财报,一大部分成本都在cdn上,映客CEO也表示过目前成本最大的还是在于cdn;
4、坑多:第一部分提到的技术,如果在最开始没有把选型做好,或者技术能力不够,那么以后就走上了漫漫的填坑路,新的功能来不及做,老的坑还没有填好;
5、时间成本:等我辛辛苦苦搞了大半年开发了一个直播产品时,直播这场战争或许已经死去了很多家,这个时候活下的直播产品已经拥有了大量用户,我拿什么和他们竞争。

三、利益相关
我们团队是做直播、im技术的,底层架构都是做好的,开放给开发者sdk、api接口、demo,开发者接入后就可以实现直播的功能。
到这里我已经告诉你,怎么样解决直播技术的难点了,哈哈。
潘胜 ,百度市场经理,情趣用品研究猿
最重要的是先找对定位,现在做直播的APP很多,垂直类直播、秀场直播、素人直播,如果你有垂直用户比如游戏人群基础,可以考虑直接用技术切入;如果你有家族、工会资源,可以做秀场直播;如果你希望做全民社交,就考虑素人直播,素人直播里映客和抱抱的体验目前是最好的,有几个原因:

1、真正解决了用户“寂寞”的问题:
目前市场里40%是垂直直播平台,为游戏等垂直人群服务,40%是「秀场直播」,通过工会和家族长签入大量“职业秀场”主播,以互动很少的表演为主,以及不到20%的「素人直播」。素人直播不会像秀场直播那样,方便管理,批量引入主播,但是素人的特点是“非常会跟观众聊天”,几乎是会陪着观众一直聊,不断地提到观众的ID,比如“*****你几天没来去哪了?”“刚才你说你还没吃饭,快点去啊!”,用现在流行的话说,就是会聊,“会撩”啊!这种持续的亲民的撩真正能解决用户心中的“饥渴”,解决寂寞,甚至让用户产生错觉:我跟主播已经是朋友了!
2、氛围温暖纯洁,利长期运营发展:
抱抱是个奇葩的平台,可能是由于团队的「精神洁癖」,几年来对男性用户的反作弊做得“令人发指”!在抱抱的贴吧和官方微博上可以看到大量男性用户用辱骂的方式申讨“被封号”,据说抱抱每天会封掉不低于1200个男性账号,而这些ID被封掉的原因,无外乎脏话、约P等不好的信息。
团队的这种精神洁癖,让这个奇葩的平台男女比例几近1:1(陌陌一直是9:1),这种男女比例又使得平台用户整体素质偏高,也就不奇怪在抱抱的直播互动里,永远看不到脏话和不雅的消息。
当然这就成了一个平台长期运营发展的杀手锏。
3、据说主播吸金效果优于其他平台:
我跟很多直播平台的运营负责人聊过,在大家都在抢网红抢明星的时候,从后台数据却可以发现,真正的吸金能力法则是:素人主播>明星>秀场主播>啥也不是,也就是说用户不会为了跟自己“没关系”的名人买单,只会跟送了礼物就有“反应”的亲民素人产生更多的礼物交往。

综上,个人更看好素人直播平台的发展,因为这个领域目前还远没有饱和,且在大量的校园用户中还没有形成习惯的培养,市场空间非常大。相比较,艺人、网红资源的商业透支逐日严重,市场炒作成为习惯,且商业链条过于复杂,不适合真正做社交的平台长期接入。

范子逸 ,后台码农一枚
单说服务器端,
没有技术难度!
没有技术难度!
没有技术难度!

虽然这么否则自己的工作有点伤心,但是随着近年来直播的火爆,各个云服务商已经把复杂的直播传输和分发的工作做了。搜索 "视频云" 就会发现各种网站都提供了现成的云服务。
传统CDN厂商也不甘落后,提供了针对直播的方案。

成本方面服务器租台云服务器,然后攒钱买带宽吧。直播的成本主要都在这儿呢。
直播的主要成本其实就是在带宽上。
其实单从技术的角度上讲,目前直接和第三方的视频云平台合作,他们就能把相关的技术都解决了。之前金山视频云团队就曾在三周内,帮客户完成了从定义产品到APP上线全流程。现成的Iaas,Pass层服务,还有H.265支持,美颜鉴黄等高级接口的调用。
所以个人觉得,主播平台的成本,真的还是在运营了。技术层面的问题现在真不难解决。
night ,心理学研究
从整个路径,直播是有技术难度和业务逻辑复杂度并存的技术


平台的角度看
推流的稳定性 ,转码/转封装对于各种客户端和码流的兼容和适配性,cdn成本和播放稳定之间的权衡,各运营商资源支持,p2p支持。
播放是实时的,只要路径上任何一个环节有问题,都会产生效应,没有任何传统架构上有缓存的说法


需求的角度看
视频云 客户端难以配合,用户性能指标要求不一(例如播放延迟和启动延迟,播放稳定性),需求多样(画中画,混流,api控制切换,广告流等)。



运营的角度
公有云突发流量多,业务敏感(口碑效应),运营隔离和调度,过载等。


所以
整个直播需要的转码 tcp等技术深度的研究员 和架构能力较强,海量经验的丰富的架构师和运营负责。
其他编码相关的,再找几个好点的应届生应该就可以了。

另外,技术和资源投入度来看,直播相对于静态下载,传统cdn而言,不是一个level的事情,所以国内的公有云视频云市场势必会洗牌,只留下几家巨头
刘玉 ,软件工程师
楼上有人从 CDN 和视频编解码上介绍了一下,这块难点应该是视频点播和直播都需要面对的。
但是直播软件有其社交特性,很像 IM(这就是让扎克伯格兴奋的点),这应该是未来所有走社交化直播的主攻方向。
直播像IM,但是解决方案不一样,超大房间弹幕的技术架构是一个考研团队技术的点。
另外,社交类APP,必须有一套成熟的长链接服务,很多初创团队,例如:映客。
使用的是 HTTP,安全性和连通性非常差,体验很不好。
另外,还涉及到订单、支付、结算和对账,这块需要电商技术方案,据我所知某APP就被刷走过几十万。
综上,做好直播其实非常难,初创团队搭个架子则非常简单,如果你同时拥有以下方向大牛,做一款直播就很简单了。

例如:
视频编解码,CDN方向
IM 方向
电商方向
乔大大 ,不断尝试寻找人生意义和实现方法的ITer
根据以前的直播经验,结合得票最高的回答,画了个架构图,可以参考下


现在很多直播app都是用的第三方直播云技术,规模大了之后又开始自己内部在研发

要说直播的技术难点,个人看法依次是: 图像原理,tcp/ip及应用网络协议,linux系统,负载均衡,硬件ic
当然,不懂这些,不妨碍能做出原型来,尤其现在开源和第三方直播服务很丰富的情况下
IOS 来说:想开源和免费的可以选择现在的几个知名项目VideoCore + GPUImage+基于GPU的美颜滤镜 ,播放用IJKPlayer 自己修改。

我倒是有完整的稳定的源代码。但是要8W一套。自己研究了一年。美颜等效果和延迟强于映客。但不是映客的代码。1413287676

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多