构建Facebook Live直播流中的挑战

Facebook Live直播项目启动于两年前的一次黑客马拉松(hackathon),八个月后就匆匆上线。在近期的QCon伦敦大会上,Facebook视频架构主管Sachin Kulkarni做了演讲并指出,如何处理同一直播流中数量变化无法预测的观看者是Facebook Live的一个挑战。在报告中,Kulkarni还介绍了构建Facebook Live直播流时所面对的架构上和设计上的挑战。

从较高层次上看Facebook Live架构,一旦一个观看者连接到最近的“接入点”(PoP,Point of Presence),就会启动一个Live直播流。PoP连接会被依次提交给数据中心,在数据中心中完成直播流的编码。之后,数据中心会将直播流发送给多个不同的PoP和回放客户端。据Kulkarni介绍,PoP负责视频的缓存、终止观看直播的客户连接,并通过Facebook自建网络将直播流传递给数据中心。自建网络传输更为可靠,并降低了往返时间。

针对在扩展性上的挑战,Kulkarni指出,并发直播流的数量和全部直播流的总计观看者数量都是可预测的,因此并不存在多少挑战性问题。真正的问题在于,单一直播流上的观看者数量不定,从寥寥数人到门庭若市。因为观看者是不可预测的,也就无法对其做出规划。为解决该问题,Facebook采用了缓存和直播流分配这两种方法。

Kulkarni指出了相比于常规视频而言,Live直播流中存在的其它一些挑战:

因为直播内容是实时创建的,所以不可能预先建立缓存,任何形式的预缓存都是不可行的。 对直播事件做预先规划并扩展资源,这一做法是存在问题的。 难以预测由全球热点事件所导致的并发流和观看者的激增问题。

网络问题是直播流可靠性的主要挑战。为解决这些问题,Kulkarni提出了三个建议:

通过使用自适应码率进行调整,降低视频质量以适应较低的带宽,虽然这项技术常用于回放端,但他们也正在将其用于采集端了。 使用客户端的临时缓存处理暂时性连接丢失。 最坏的情况是带宽不够,这时需要将广播和回放转换成只提供音频。Facebook Live认为,能听到要比能看到更重要。

Kulkarni还给出了一些从项目中得到的经验教训:

不积跬步,无以至千里。任何大型服务都是从细微之处开始的。动手去编写代码远胜于无休止地纸上谈兵。 可靠性和可扩展性是设计中必须要考虑的问题。无论运行故障是否有规划,都应做出相应的设计。 为交付大型项目,需要做出妥协。 考虑未来的特性,应保持架构的灵活性,使得团队的演进可以超越架构的变更。

   

 

  

本文转自d1net(转载)

时间: 2024-09-22 19:35:08

构建Facebook Live直播流中的挑战的相关文章

Facebook的实时流处理技术

随着云计算大数据的发展,有越来越多的场景需要借助于实时数据处理技术,为此有很多公司开发了自己的实时处理系统,Facebook就是其中的一员,他们构建的实时数据处理生态系统每秒钟能够处理数百GB的数据.本文介绍了Facebook在设计该系统时从易用性.性能.容错.可伸缩性以及正确性等方面考虑所做的重要设计决策,这些决策和系统如何满足秒级的延迟需求,以及在构建该系统的过程中Facebook所总结的经验教训. 易用性:处理需求有多复杂?SQL是否足够?是否必须要使用C++或者Java这样的编程语言?用

抛开flash,自己开发实现C++ RTMP直播流播放器

众所周知,RTMP是以flash为客户端播放器的直播协议,主要应用在B/S形式的场景中.本人研究并用C++开发实现了RTMP直播流协议的播放器,结合之前做的RTMP直播采集端,可以将RTMP协议完全扩展到C/S形式的应用场景中,这将对之后的通用.全平台的流媒体架构设计和实现,打下坚实的基础. 开发的意义 RTMP直播协议,是Adobe公司推出的以flash播放器为客户端的实时直播流协议,是一种应用非常广泛的通信协议.而flash直播,也是到目前为止,web页面上最成熟的直播技术.不过,因为fla

RTMP、RTSP、HTTP视频协议详解(附:直播流地址、播放软件)

一.RTMP.RTSP.HTTP协议 这三个协议都属于互联网 TCP/IP 五层体系结构中应用层的协议.理论上这三种都可以用来做视频直播或点播.但通常来说,直播一般用 RTMP.RTSP.而点播用 HTTP.下面分别介绍下三者的特点.   1,RTMP协议 (1)是流媒体协议. (2)RTMP协议是 Adobe 的私有协议,未完全公开. (3)RTMP协议一般传输的是 flv,f4v 格式流. (4)RTMP一般在 TCP 1个通道上传输命令和数据.   2,RTSP协议 (1)是流媒体协议.

ffplay不能直播red5上的直播流问题解决

1 我一直使用flex4和flash开发视频聊天的程序,以前再flex中和flash直接写上服务器路径然后指定play的流的名称就可以了.代码如下: // Check for reconnect. if ( nsPlay != null ) {     // Stop and close previous NetStream.     var stopStreamEvent : StopStreamEvent = new StopStreamEvent();     stopStreamEven

nginx开发(四)调用ffmpeg,搭建rtmp直播流。

1: 修改conf文件,配置rtmp直播 打开usr/local/nginx/conf/nginx.conf,添加红色内容: rtmp {#rtmp点播配置    server {        listen 1935;        chunk_size 4000;        application  vod {                play /usr/local/nginx/html/multimedia/rtmp/vod;  #点播媒体文件存放目录        }    }

D1net阅闻:Facebook视频直播功能正式开放

Apple收购K12数据分析工具LearnSprout Apple公司称已经收了教育科技创业公司LearnSprout,后者主要提供K12数据分析工具,Apple并未透露收购价格和具体目的.LearnSprout在美国42个州中已经找到了2500家学校使用其软件,此前曾拿到400万美元融资. 防电话诈骗公司Pindrop Security获Google 7500万美元融资 网络电话安全公司Pindrop Security获Google 7500万美元融资,这已经是Google在网络安全领域的第四

浅析Facebook社交搜索:携手微软挑战谷歌

中介交易 SEO诊断 淘宝客 云主机 技术大厅 这是一场略带悬念又在意料之中的发布会.Facebook此前发出少量邀请函,邀请媒体参加Facebook上市后的首个重大发布会.由于邀请函并未透露发布内容,引发了外界的普遍猜测,Facebook手机与社交搜索则被公认是最有可能的发布产品. 当地时间周二上午10时(北京时间周三凌晨2时),Facebook创始人兼CEO马克•扎克伯格(Mark Zuckerberg)主持发布会,揭开了此次神秘新产品的面纱.谜底就是社交搜索Graph Search--Fa

流媒体技术学习笔记之(十八)互联网草案HTTP直播流2017年5月

 原文地址:https://tools.ietf.org/html/draft-pantos-http-live-streaming-23 1.HTTP直播流介绍 HTTP实时流媒体提供了一个可靠的,成本效益的手段通过互联网提供连续和长时间的视频.它允许接收器使媒体的比特率适应当前网络条件,以保持不间断播放最好的质量.它支持插页式内容边界.它为媒体加密提供了一个灵活的框架.它可以有效地提供相同内容的多个呈现,例如:音频翻译.它提供了与大规模HTTP的兼容性缓存基础设施以支持向大量受众传递. 自2

将ASP生成的内容写入响应流中最有效的方法

刚开始学ASP时,照书里HTML中包含ASP后来,用Response.Write 输出HTML可现在看了这一篇文章,难道真的要把Response.Write写成一句(" & _?你说说?-------(转http://www.ccidnet.com/html//tech/web/2000/11/10/58_1298.html)什么才是提高ASP性能的最佳选择(一)(作者:青苹果工作室编译 2000年11月10日 17:20) 将ASP生成的内容写入响应流中最有效的方法是什么? 使用ASP