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

问题描述 投票:31回答:5

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

html5 amazon-s3 video-streaming html5-video rtmp
5个回答
59
投票

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

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

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

  • 安全和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。我提到这一点是因为人们常常想要一种方法来支持各种不同的设备。

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


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>标签,您可以链接尽可能多的视频。更多格式只意味着跨不同平台提供更好的支持(例如,某些vanilla Linux发行版可能无法播放MP4等)。

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

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

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


1
投票

我正在制作一些全球制作的视频内容。我需要降低成本,但我希望能够轻松扩展并具有足够的功能来安全地提供相当复杂的系统。 AWS似乎很棒,现在已经使用它们几年了,我认为S3 Buckets非常棒。他们是免费的,达到极限。是的。他们确实成功地提供了我认为的流媒体视频;因为它存放在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 Free Tier HomePage

AWS Documentation Site for S3


0
投票

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

http://zencoder.com/en/

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


-1
投票

我有一个具有响应能力的HTML5播放器的CloudFront和S3设置和流媒体视频。请注意,我试图让它在所有浏览器中运行,并且它不能100%地运行它。

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

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

希望这些帮助。

© www.soinside.com 2019 - 2024. All rights reserved.