36

我想使用 HTML5 视频播放器和流式视频。这对 S3/CloudFront 可行吗?我了解亚马逊使用 RTMP 流媒体协议,而 HTML5 的video标签不支持 RTMP。有没有办法用 HTML5 播放器流式传输视频?

4

4 回答 4

65

@Wayne Koorts 发布的大部分内容都为一个好的答案提供了基础。似乎断开连接的是您可以通过渐进式下载“流式传输”视频。如他所示,这适用于任何与 html5 兼容的视频文件。

为了在 mp4 文件的渐进式下载中获得最佳性能,您需要 moov atom 元数据出现在文件的开头。确保您的 mp4 文件具有此属性是 qtfaststart 程序包含在 ffmpeg 中的原因之一。

当然,渐进式下载并不是“流媒体服务器”。流媒体服务器旨在支持许多不同的功能,包括:

  • 安全和 DRM
  • 自适应流/交织(支持将多个比特率交织到特定文件中)
  • 寻求

似乎这里表达的特别关注是搜索功能。碰巧这在 html5 和 s3/cloudfront 中得到了很好的支持。

令人困惑的是,视频文件的云端有几个选项。一种选择是通过他们的许可 Adob​​e FMS 服务器网络交付文件。这就是关于使用 RTMP 的困惑发挥作用的地方。然而,这只是一种选择。文件可以以标准的“下载”形式分发到云端,并且由于字节范围的实现和对所谓的伪流的支持,它们将具有搜索属性。

关于“伪流”这个术语似乎有很多混淆,但在 html5 的情况下,它只是要求 HTTP 服务器支持 1.1 规范。查找时,客户端发送一个字节范围请求,服务器负责传递该部分文件。

换句话说……使用 html5 播放器进行搜索确实适用于云端服务器,因为它们与 HTTP 1.1 兼容。

至于流媒体服务器提供的其他一些功能,有多种竞争服务器已经实现了“H264 流媒体”或 MPEG-DASH 的元素,作为使用 RTMP 和 FMS 兼容服务器的替代方案。许多基于 Flash 的播放器支持这些功能,超出了简单的搜索范围。JWPlayer 和 Flowplayer 是支持部分或全部功能的播放器的两个示例,但是 HTML5 的视频播放器不支持任何这些功能。您可以查看http://h264.code-shop.com/trac#H264StreamingModuleIntroductionversion2了解更多信息

如果这对您来说还不够混乱,Apple 实现了他们自己的“HTTP Live Streaming”协议,有时称为 m3u8,它们在 ios 和 quicktime 中支持。我提到这一点是因为人们经常想要一种支持各种不同设备的方法。

我希望这有助于澄清一些事情。

于 2013-09-11T11:33:00.730 回答
16

我最近成功做的事情是使用Video.js HTML5 播放器(开源)视频播放器,视频托管在 S3 上。基本上,您只需将视频上传到您的 S3 存储桶中,然后页面上的代码如下所示(在您的页面中包含 Video.js CSS 和 JS 文件之后):

<video id="example_video_1" class="video-js vjs-default-skin"
    controls preload="auto" width="1600" height="900"
    poster="http://mys3bucket.s3.amazonaws.com/videoImage.jpg"
    data-setup='{"example_option":true}'>
    <source src="http://mys3bucket.s3.amazonaws.com/myvideofile.mp4" type='video/mp4' />
    <source src="http://mys3bucket.s3.amazonaws.com/myvideofile.webm" type='video/webm' />
</video>

poster只是在视频加载或不播放时在视频播放器上显示的静止图像。至于<source>标签,您可以链接尽可能多或尽可能少的视频。更多的格式只是意味着更好地支持不同的平台(例如,一些 vanilla Linux 发行版可能无法播放 MP4 等)。

请参阅此处的 Video.js 快速入门指南。

在决定是使用 S3 还是 CloudFront 时:恕我直言,S3 通常更适合视频,因为当您存储大量数据时成本会更便宜(因为 CloudFront 将所有内容的副本分发到其所有边缘服务器,尽管您可以限制这有点通过选项)。有些人确实更喜欢 CloudFront,尽管因为速度快,但请记住 CloudFront 主要用作需要超快速响应时间的内容交付网络(例如,用于站点图形、样式表、JS 文件等),因此它是一个权衡取舍,具体取决于根据您的需要。如果您的视频都非常小,那么您可能会发现 CloudFront 实际上适合您的需求。

要更明确地分析成本,您可以使用亚马逊的每月成本计算器

于 2013-09-05T20:52:44.430 回答
1

我正在为全球制作制作一些视频素材。我需要降低成本,但我希望能够轻松扩展并拥有足够的功能来安全地交付相当复杂的系统。AWS 看起来很棒,已经使用它们几年了,我认为 S3 存储桶很棒。它们在一定程度上是免费的。是的。他们确实成功地提供了我认为的流媒体视频。因为它位于 S3 中,并且在页面加载时立即播放到我的 JWPlayer 中,没有抖动或延迟。

我可以看到一些流媒体视频的描述是模糊的,仍然让我感到困惑,尽管@gview 做得很好,为我们提供了更深层次的煽动。我对它的复杂性感兴趣,但如果您的议程是让该视频继续播放,我不相信 HTML5 是您的答案。据我所知,支持和配置 SOAP、REST、HTTP 甚至 HTTPS。AWS 的文档也值得注意,非常有帮助。我将在此处附上开始链接。

@ user2352370:JWplayer ..我还没有决定。我刚刚购买了中间层会员资格,现在在阅读上面的 Wayne Koorts 后,我认为 JSvideo 更好,原因有很多,如果我能得到退款,我会继续努力。除了为视频提供的样式之外,我没有看到 JWvideo 的任何直接价值。我相信至少 JWvideo 对我的价值仅限于视频的样式。我可以使用 JSVideo 为多种设备和浏览器类型轻松创建各种后备。我什至可以设置 JSVideo 的样式,但也许要说 JWvideo 的简单性。我可能需要它来应对未来几个月的视频帖子的冲击。

JWVideo 和 JSVideo 都可以工作
我认为 JWVideo 和 JSvideo 都可以完成这项工作,我目前在我的网站上都有各种视频,而且都做得不错,但还没有对浏览器进行过深入的测试。

创建一个免费的 AWS 账户并免费使用这些服务。如果您与 RackSpace 或 Host Gator 等供应商打交道已有一段时间,它会让人大开眼界。
AWS 免费套餐主页

适用于 S3 的 AWS 文档站点

于 2013-11-17T04:51:15.050 回答
0

正在为我自己的网站寻找使用 VideoJS 托管视频的 AS3,这就是为什么我发现了你的问题,但是当我查看 VideoJS 的示例代码时,我注意到该链接位于一家名为 ZenCoder 的公司 - http://video-js。 zencoder.com/oceans-clip.mp4

http://zencoder.com/en/

我与 Zencoder 没有任何关联,但如果您正在寻找基于云的视频托管,大概值得考虑。

于 2014-04-19T20:34:03.330 回答