可以使用Amazon S3 / CloudFront和HTML5播放器流式传输视频吗?

时间:2013-04-29 09:55:34

标签: html5 amazon-s3 video-streaming html5-video rtmp

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

6 个答案:

答案 0 :(得分:59)

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

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

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

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

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

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

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

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

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

如果这对您来说不够混淆,Apple会实施他们自己的“HTTP Live Streaming”协议,有时称为m3u8,他们支持ios和quicktime。我之所以提到这一点,是因为人们常常想要一种方法来支持各种不同的设备。

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

答案 1 :(得分:13)

我最近成功完成的一件事就是使用Video.js HTML5 player(开源)视频播放器,在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>代码,您可以在视频中链接尽可能多的代码。更多格式只意味着跨越不同平台提供更好的支持(例如,某些普通的Linux发行版可能无法播放MP4等)。

请参阅Video.js快速入门指南here

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

为了更明确地分析成本,您可以使用亚马逊的monthly cost calculator

答案 2 :(得分:1)

我正在制作一些全球制作的视频内容。我需要降低成本,但我希望能够轻松扩展并具有足够的功能来安全地提供相当复杂的系统。 AWS似乎很棒,现在已经使用它们几年了,我认为S3 Buckets非常棒。他们是免费的,达到极限。是的。他们确实成功地提供了我认为的流媒体视频;因为它存放在S3中,它在页面加载时立即播放到我的JWPlayer中,没有抖动或延迟。

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

@ user2352370:JWplayer ..我尚未决定。我刚刚购买了中级会员,现在阅读上面的Wayne Koorts,我认为JSvideo因各种原因更好,如果能得到退款,我会继续使用。我没有看到JWvideo的任何直接价值,超过它为视频提供的样式。我相信JWvideo至少对我的价值仅限于视频的风格。我可以使用JSVideo轻松地为多种设备和浏览器类型创建各种后备。我甚至可以为JSVideo设计风格,但也许可以说JWvideo的简洁性。我可能会需要它来进行我将在未来几个月内发布的视频帖子的冲击。

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

执行创建免费的AWS账户并免费使用这些服务。如果您在一段时间内与RackSpace或Host Gator等供应商打交道,那么它的开放性很好 AWS Free Tier HomePage

AWS Documentation Site for S3

答案 3 :(得分:0)

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

http://zencoder.com/en/

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

答案 4 :(得分:0)

AWS不再支持RTMP或Flash。因此,请使用Apple的HLS-HTTP Live Streaming。

您将需要使用以下堆栈:

用于存储视频的S3,CloudFront,MediaConvert可将单个.mp4转换为流文件(.m3u8索引文件和.ts段文件)。

即使对于技术上有偏见的人,手动完成所有这些操作,并且每次为每个视频进行操作都是非常密集且费时的。如果您拥有WordPress网站,则可以使用https://S3MediaVault.com之类的插件来处理所有这些问题。

答案 5 :(得分:-1)

我有CloudFront&amp; S3设置&amp;使用响应式HTML5播放器播放视频。请注意,我试图让它在所有浏览器中运行它不会100%如何工作。

这是一个有趣的教程,可以通过JW Player&amp; amp ;;将视频嵌入到WordPress网站中。 S3:http://www.mywpexpert.com/embed-videos-amazon-s3-jw-player/

以下是在WordPress中直接连接到S3的另一个示例:http://html5.svnlabs.com/amazon-s3-cloud-html5-player/

希望这些帮助。