使用Amazon Elastic Transcoder获取视频文件的视频分辨率

时间:2013-03-20 02:12:15

标签: javascript video amazon-web-services amazon-s3 html5-video

我们有这个配置工作:

1- Display a JS Upload Form to the visitor
2- Upload file chosen direclty to Amazon S3
3- Transcode the Video in MP4 using Amazon Elastic Transcoder with options:
       * resolution: auto
       * thumbnails: on, every 2sec

一切正常。但是,由于两个原因,我需要获得原始视频分辨率/比率。第一个原因是能够为缩略图世代设置一个好的比例。 (有时它是16 / 9,4 / 3,iphone视频...)第二个原因是显示一个完美比例的HTML5视频播放器,以避免播放器两侧出现空白。

由于Amazon Elastic Transcoder已经自动检测到视频分辨率,我认为他们可能有办法返回检测到的分辨率,但......似乎不是这样!

任何人都可以考虑一种获得视频分辨率/比率的方法吗?我目前的解决方案是从我的服务器上的S3下载视频,并使用FFmpegFFprobe检测分辨率。显然,这并不理想。

2 个答案:

答案 0 :(得分:1)

我有一个方法可能适合您,但我想提一下,直接访问有关上传视频的元数据直接限制了弹性转码器服务的实用性,我强烈建议使用像encoding.com这样的替代方案(具有讽刺意味的是他们自己的服务器是hosted on AWS)。


所以我的解决方案是你可以使用预设来编码creates thumbnail files that match the aspect ratio of the original uploaded video的作业,方法是将其设置为“自动”:

  

缩略图的宽高比。如果你想要Elastic Transcoder   自动检测输入文件中的宽高比并使用它   缩略图的值,选择自动。如果要指定方面   缩略图的比例,选择适用的值。

此时,您现在有两种方法可以实际访问原始视频的宽高比(两者都涉及JavaScript):

1。编写下载第一个缩略图文件的JS,并显式解析图像尺寸,并通过将宽度除以高度来计算纵横比。

OR

2。指定ThumbnailPattern when you create the original job,使用“{resolution}”占位符生成包含图像文件分辨率的缩略图文件名:

  

缩略图文件名模式

     

{resolution}(可选):如果您希望Elastic Transcoder包含   文件名中的分辨率,包括字段中的{resolution}。

然后你可以,所以你只需要获得编码视频的第一个图像缩略图,并使用JS来解析分辨率的文件名并计算宽高比。

这两种方法都有点hacky,但不需要进行任何额外的视频处理,并且将来当/如果AWS允许您访问元数据时,您应该有一个非常简单的升级路径来消除这种污染。< / p>

根据亚马逊论坛上AWS开发人员的回复,访问视频元数据可能会在不久的将来推出,所以我猜你也有第三种等待选项,这个问题可能会自行解决。

答案 1 :(得分:0)

现在可以检索有关输入视频和作业输出视频的任何信息:
http://docs.aws.amazon.com/elastictranscoder/latest/developerguide/get-job.html