为什么Facebook要将视频从Flash全面迁移到HTML5?
英文原文:Why we chose to move to HTML5 video
编者按:Facebook 前端高级工程师 Daniel Baulig 解释了 Facebook 为什么要将视频全面迁移到 HTML5,包括这样做的好处,带来的挑战和解决办法。
最近,我们将 Facebook 网络中的所有视频全部从 Adobe Flash 迁移到了HTML5。我们将继续与 Adobe 合作,为我们平台上的游戏提供一个可靠、安全的 Flash 体验,但我们会在所有的浏览器中默认使用 HTML5 技术播放视频。
从开发速度到易访问性,HTML5 提供了很众多好处。Facebook 体系庞大,需求复杂,迁移到 HTML5 能让我们更好地去提升创新的速度和规模。
HTML5 的优点
开发速度
使用 Web 技术使我们能够利用开源社区和 Facebook 中已有的优秀浏览器工具,不必重新编译代码,并能够在浏览器直接应用变化,从而让我们得以快速行动。
可测性
我们在 Facebook 有一个优秀的测试基础设施。迁移到 HTML5 视频后,我们可以自由地使用自己基础设施里所有的 web 工具,比如 Jest 和 Webdriver。
易访问性
HTML5 使我们能够建立一个完全支持屏幕阅读器和键盘输入访问的播放器。我们可以利用 HTML5 提供的辅助工具让视力障碍人士更容易地使用我们的产品。让所有人都能用上 Facebook 是我们使命(让世界更加开放和互联)中的一个重要组成部分。
我们必须应对的挑战
获得正确的日志
视频日志有助于我们了解人们如何使用视频播放器以及播放器的工作情况。我们会向公众分享一些数据,例如视频观看次数和视频发布者,而我们会使用其他的一些数据来确定应该将多少以及哪些视频展现给人们。我们必须确保在同一场景中,新的视频播放器记录的数据和老的播放器记录的数据一致。由于配置差异和其他的一些细节,要做到这一点异常的困难。为确保日志数据的正确性,我们创建了一个测试套件,在相同的用户交互场景下,同时运行两个视频播放器,然后验证日志记录是否一致。这样,我们才能确保新的 HTML5 视频播放器的报告数据会有一个很高的可信度。
浏览器 bug
在将视频转移到 HTML5 技术之前,我们要解决的一个主要问题是各种浏览器中存在的各种关于 HTML5 视频的 bug。在 Chrome 中使用 SPDY 协议的一个具体 bug 会导致浏览器在 News Feed 上停止加载和播放视频。我们最终确定了这个问题是由于同时加载了太多的视频触发的,所以我们减少了视频同时加载的数量,并确保如果加载的视频不再需要时我们会尽快将它们删除。
在旧浏览器上的糟糕表现
从理论上讲,现在使用的大多数浏览器都支持 HTML5 视频。然而,在实践中我们发现了很多老版本浏览器上使用 HTML5 播放器时会比使用 Flash 播放器表现更差。此外,我们还看到其他的一些错误,比如更长的加载时间和整体上更糟的体验。因此我们决定首先只在一小部分浏览器上推出 HTML5 播放器,然后一旦我们提升了性能并修复了小 bug,我们会逐渐推向更多的浏览器版本和操作系统。这就是为什么我们一直等到最近才在所有的浏览器中(除了很小的一部分)将视频播放技术默认切换到 HTML5。
页面加载时间变长
我们在推出 HTML5 播放器时面临的最后一个主要问题是,加载 Facebook 的时间变长了。在 Facebook,我们十分关心我们提供给人们的体验。用户需要多久加载 Facebook 是我们衡量用户体验的一个重要因素。当我们发布了 HTML5 播放器后,我们注意到,用户平均加载 Facebook 所花费的时间有所增加。通过修复几个小的性能问题,并进行了多项细微的优化,我们终于看到了一个让我们感到高兴的水平。
对指标和用户体验的影响
使用 HTML5 视频技术不仅简化了我们开发过程,同时也提高了人们在 Facebook 上的视频体验。切换到 HTML5 后,视频的播放速度更快了,人们点赞、评论和分享视频的数量更多了,并且用户报告的错误更少了。我们做出这项调整后,人们似乎开始在视频上花费更多的时间。
视频是你与周围的世界进行互联的一个精彩渠道,而我们很高兴地看到我们在使用 HTML5 技术后,能使 Facebook 的视频体验变得更好。
本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5!
阅读其他app 开发相关文章:http://wex5.com/cn/?p=3443
为什么Facebook要将视频从Flash全面迁移到HTML5?的更多相关文章
- FaceBook要在视频领域打败YouTube?
据<纽约时报>报道,FaceBook正在探索一项新的策略来直接把音乐视频嵌入到用户的News Feeds中.目前,具有代表性的视频网站有YouTube和Vimeo,它们可以在社交网络上分享 ...
- 可进可退,jQuery图片、视频、flash播放插件prettyPhoto使用记录
一.prettyPhoto简介 prettyPhoto是一款基于jquery的轻量级的lightbox图片播放浏览插件,它不仅支持图片,还同时支持视频.flash.YouTube.iframe和aja ...
- 让Flash内心崩溃的HTML5历史
对于HTML5,在今天这个互联网时代,大部分人应该至少都听说过这个名字,或许很多人对HTML5的了解都起于一句话:FLASH杀手. HTML5其实早已不是什么新鲜的事物了,其最初的雏形早在2004年就 ...
- Windows 10 (or 8)Chrome 观看视频发生flash不能加载,即"could't load plugins"原因之一
最近一直如题,不能看视频,后来发现从一个已经使用管理员权限打开的应用转到Chrome就可以加载flash,而从桌面打开Chrome就加载不了. 今天再次查找信息,从Ubuntu下Chrome不能加载f ...
- 如何下载网页上的视频和flash的方法
下面介绍一种下载视频的简便方法,这种方法不需要安装任何下载软件,而且适合所有 FLV(Flash Video)格式的视频文件. 第一步 清空Temporary Internet Files(临时网络文 ...
- 网页中创建音频、视频和Flash等多媒体:object元素
<object>元素:它主要用于定义网页中的多媒体,比如音频.视频.Java applets.PDF.ActiveX和Flash.Object标签是成对出现的,在object标签内可以使用 ...
- 浏览器中显示视频,flash等的代码处理
window.flashView=function(flash_url){ var html=''; html+='<div id="obj_flash_div">'; ...
- 播放视频插件swfobject.js与Video Html5
播放视频的方法: 方法一. 使用HTML5播放 <video src="./files/Clip_480_5sec_6mbps_h264.mp4" width="1 ...
- 无需Flash实现图片裁剪——HTML5中级进阶
前言 图片裁剪上传,不仅是一个很贴合用户体验的功能,还能够统一特定图片尺寸,优化网站排版,一箭双雕. 需求就是那么简单,在浏览器里裁剪图片并上传到服务器. 我第一个想到的方法就是,将图片和裁剪参数(x ...
随机推荐
- 高级I/O之readn和writen函数
管道.FIFO以及某些设备,特别是终端.网络和STREAMS设备有下列两种性质: (1)一次read操作所返回的数据可能少于所要求的数据,即使还没有达到文件尾端也可能是这样.这不是一个错误,应当继续读 ...
- C#_自动化测试 (四) 自动卸载软件
在平常的测试工作中,经常要安装软件,卸载软件, 即繁琐又累. 安装和卸载完全可以做成自动化. 安装软件我们可以通过自动化框架,自动点击Next,来自动安装. 卸载软件我们可以通过msiexec命 ...
- 修改范围PHP_INI_SYSTEM与PHP_INI_ALL的区别
PHP_INI_USER 可在用户脚本(例如 ini_set() )或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定 PHP_INI_PERDIR 可在 php.i ...
- Codec工具类
import java.math.BigInteger; import org.apache.commons.codec.DecoderException; import org.apache.com ...
- android开发之路09(浅谈SQLite数据库01)
1.SQLite数据库: SQLite 是一个开源的嵌入式关系数据库,实现自包容.零配置.支持事务的SQL数据库引擎. 其特点是高度便携.使 用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同, ...
- spl_autoload_register()和__autoload()区别
这篇文章主要介绍了spl_autoload_register()和__autoload()区别,需要的朋友可以参考下 关于spl_autoload_register()和__autoload(), ...
- linux mail 配置
1:sudo apt-get install sendmail sendmail-cf2:ps aux | grep sendmail3.配置/etc/mail/sendmail.mc FEAT ...
- javaweb学习总结十九(http协议概述以及http请求信息分析)
一:http协议概述 1:http协议定义 2:使用telnet程序连接web服务器,获取资源 3:http协议:超文本传输协议,它是基于tcp/ip协议,就是建立在tcp/ip之上工作的, http ...
- [改善Java代码]在接口中不要存在实现代码
第3章 类.对象及方法 书读得多而不思考,你会觉得自己知道的很多. 书读得多而思考,你会觉得自己不懂的越来越多. —伏尔泰 在面向对象编程(Object-Oriented Programming,O ...
- poj3393[模拟题]
Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS Memory Limit: 65536K Total Submissi ...