目标: 我有一个允许用户上传视频的应用程序,然后我需要能够立即将这些视频流式传输给其他用户。我目前的设置工作正常,但我现在想要对视频进行转码,以便针对移动流媒体进行优化。寻找一些最佳实践,请帮助!
当前设置: 我使用S3存储桶来存储视频资产本身。成功上传后,我会在其他地方创建一个单独的视频对象,其中包含该特定视频的所有元数据,包括检索它的URL。 *请注意,实际上我通过AWS CloudFront进行流式传输,因此在视频对象上保存为属性的URL实际上是连接到S3存储桶的CloudFront分配的基本URL。 / p>
问题: 现在我想转发视频以进行移动优化流式传输。我可以使用弹性转码器运行后台作业,该转码器从一个AWS桶中取出它们(称之为#34; bucket1"),对它们进行转码,然后将它们放入为优化视频指定的另一个桶中(称之为" bucket2&#34)。但我的问题是,现在当用户上传视频时,流程如下所示:上传到bucket1,并使用元数据创建相应的视频对象。视频对象需要一个URL,以便我可以稍后流式传输视频。我设置了与bucket2相关联的URL(最终将放置优化的视频资产)。问题是,我的批处理作业不会再运行一小时,但是用户从现在开始请求该视频一分钟。显然,bucket2 URL上还没有优化版本,因此我无法对视频进行流式处理。
我尝试过的事情: 最近我想,如果不是为转码后的视频创建bucket2,我设置我的后台作业来从bucket1中取出视频,对它们进行转码,然后再将它们放回同一个桶中,使用相同的文件名(覆盖旧的)非优化版本)。然后我每个视频只有1个文件,所以最糟糕的情况是如果用户在该视频上运行之前要求提供视频,他们仍然会获得内容,它只是非优化版本。这样做的一个问题是弹性转码器不会让我明显覆盖文件(我可以通过将它们放在第二个桶中来解决这个问题,然后使用copyObject操作进行覆盖,按照以下帖子:{{3} })。但是,更大的问题是这一切都需要一个文件名,包括扩展名。如果我想将.mov格式(例如)的文件转换为扩展名为.m3u8的hls播放列表,那么这似乎不太可能。
如果有人有任何最佳实践技巧来解决这个问题,我会非常感激!
干杯, 布兰登
答案 0 :(得分:0)
http://www.bitcodin.com能够比实时转码更快,并且可以立即向用户输出视频。它也可以在Amazon AWS中使用,例如遵循本教程:http://www.bitcodin.com/blog/2015/02/create-mpeg-dash-hls-content-for-amazon-s3-and-cloudfront/
答案 1 :(得分:0)
我知道这已经有几年了但是想增加额外的信息。 希望您在2年前找到其他解决方案,但您可以使用在线视频平台或转码服务,这两种服务都是为了处理您描述的内容而设计的,还有更多。市场上有很多可供选择,从免费到付费。 此外,当Stefan说"比实时转码更快"这意味着如果您的视频长度为15分钟,则转码将花费不到15分钟。