【发布时间】:2019-01-11 22:27:07
【问题描述】:
我正在使用 AWS elemental media convert 将 mp4 视频转换为 HLS。一切正常,但输出视频旋转了 90 度。有没有可以用来阻止这种情况发生的设置。我正在用 iPhone 拍摄视频。
【问题讨论】:
标签: amazon-web-services aws-elemental
我正在使用 AWS elemental media convert 将 mp4 视频转换为 HLS。一切正常,但输出视频旋转了 90 度。有没有可以用来阻止这种情况发生的设置。我正在用 iPhone 拍摄视频。
【问题讨论】:
标签: amazon-web-services aws-elemental
AWS Elemental Media Convert 现在增加了对旋转的支持。
【讨论】:
在 Inputs->Video Selector 下,您会找到一个名为 Rotate(顺时针)(InputRotate) 的选项来指定如何旋转您的视频。您可以选择自动旋转或指定旋转。您可以指定 0、90、180 或 270 度的顺时针旋转。
如果您的输入视频容器是 .mov 或 .mp4 并且您的输入包含旋转元数据,您可以选择自动让服务根据元数据中指定的旋转来旋转您的视频。旋转必须在 90、180 或 270 度的 1 度范围内。如果轮换元数据指定任何其他轮换,服务将默认为无轮换。 使用 Rotate (InputRotate) 指定服务如何旋转您的视频。您可以选择自动旋转或指定旋转。您可以指定 0、90、180 或 270 度的顺时针旋转。
默认情况下,媒体转换不会旋转,即使您的输入视频有旋转元数据。该服务不传递轮换元数据。
【讨论】:
根据 AWS 博客文章 (https://aws.amazon.com/blogs/media/how-to-migrate-workflows-from-amazon-elastic-transcoder-to-aws-elemental-mediaconvert/),不支持自动旋转。
我也找不到手动旋转的选项,但这可能在我不知情的情况下存在。
为什么要继续使用 Amazon Elastic Transcoder?
对于下面列出的一小部分功能,您仍然需要使用 亚马逊弹性转码器。
这些功能是:
- WebM(VP8/VP9)输入输出
- 动画 GIF 输出
- 支持 MP4 自动旋转标志
- MP3、FLAC、Vorbis 和 WAV 纯音频输出
- 使用 KMS 集成的加密支持
视频文件中嵌入了可以提取的元数据。我用过 MediaInfo (https://mediaarea.net/en/MediaInfo),我认为 ffprobe 也可以做同样的事情 (https://ffmpeg.org/ffprobe.html)。
文件元数据有很多信息,其中之一是“旋转”细节。 (“旋转”:“90.000”,)。我假设 ElasticTranscoder 会自动利用它来将您的文件置于正确的方向。
我希望 MediaConvert 至少有这个选项作为输入参数。这样我们就可以将它传递给工作调用。它需要提取此元数据的步骤,但至少可以选择。
【讨论】:
AWS 正在使用您的视频文件中的元数据来确定摄像机旋转。然后转码器会在转码期间自动使用此信息来“正确”视频。我们发现对抗这种非直观过程的最简单方法是向弹性转码器提供旋转信息 - 例如,如果根据 iOS 的旋转是 270 度,则将转码器 270 作为旋转提供 - 你生成的视频将是正确的。
【讨论】:
虽然现在 MediaConvert 不支持自动旋转,但您仍然可以在 MediaConvert 中处理内容,然后将旋转元数据添加到生成的文件中。
如果您想将旋转信息添加回 MediaConvert 输出,请尝试使用 ffmpeg 或 exiftool 执行此操作。以下是一些示例命令:
ffmpeg -i EMC_OUTPUT.MOV -metadata:s:v rotate="-90" -c copy rotated.mov
或者
exiftool "-Rotation=90” rotated.mov
【讨论】:
我也面临同样的问题。很长一段时间后,我们注意到 ios 在video itself 中设置了一个Rotation 元键。因为它并不总是 90。它可能因使用(前/后)记录的相机而异
所以要检查视频元数据中的旋转值,您可以使用mediainfo.js
通过使用库。无论您使用什么服务,您都可以获取视频信息并将相同的旋转值传递给 AWS 媒体转换/弹性转码器 JSON。通过这样做,它为我解决了问题。
【讨论】: