Javascript 使用Amazon弹性转码器获取视频文件的视频分辨率

Javascript 使用Amazon弹性转码器获取视频文件的视频分辨率,javascript,video,amazon-web-services,amazon-s3,html5-video,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 一切正常。但是,出于两个原

我们的配置正在运行:

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下载视频,并使用
FFmpeg
FFprobe
检测分辨率。显然,这并不理想。

我有一种可能适合您的方法,但我想指出的是,无法直接访问上传视频的元数据直接限制了弹性转码器服务的实用性,我强烈建议使用类似的替代方法(讽刺的是他们自己的服务器)


因此,我的解决方案是,您可以使用预设对作业进行编码,通过将其设置为“自动”:

缩略图的纵横比。如果你想让弹性转码器 自动检测输入文件中的纵横比并使用它 对于缩略图的值,请选择“自动”。如果要指定方面 对于缩略图,请选择适用的值

现在,您有两种方法可以实际访问原始视频的纵横比(这两种方法都涉及JavaScript):

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

二,。指定一个
ThumbnailPattern
,该模式将通过使用“”占位符生成包含图像文件分辨率的缩略图文件名:

缩略图文件名模式

{resolution}(可选):如果希望弹性转码器包含 解析在文件名中,在字段中包含{resolution}

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

这两种方法都有点老套,但都不需要做任何额外的视频处理,而且在将来,如果AWS允许您访问元数据,您应该有一个非常简单的升级路径来消除这种混乱


根据亚马逊论坛上AWS开发人员的回复,访问视频元数据可能在不久的将来变得可用,因此我猜您还有第三个等待选项,这个问题可能会自行解决。

现在可以检索有关作业的输入视频和输出视频的任何信息:

我想我明白你的意思,事实上我已经尝试过类似的方法。不幸的是,自动纵横比不会改变缩略图的分辨率。它只需在屏幕截图上裁剪黑线以适应缩略图,您仍然需要手动设置分辨率。我们现在实现的解决方案是直接针对S3URL使用
ffprobe
。它足够聪明,不需要下载整个文件。