我正在使用 AWS elemental media convert 将 mp4 视频转换为 HLS。一切正常,但输出视频旋转了 90 度。有没有可以用来阻止这种情况发生的设置。我正在用 iPhone 拍摄视频。
6 回答
AWS Elemental Media Convert 现在增加了对轮换的支持。
在Inputs->Video Selector下,您将找到一个名为Rotate (顺时针) (InputRotate) 的选项来指定如何旋转您的视频。您可以选择自动旋转或指定旋转。您可以指定 0、90、180 或 270 度的顺时针旋转。
如果您的输入视频容器是.mov 或 .mp4并且您的输入具有旋转元数据,您可以选择自动让服务根据元数据中指定的旋转来旋转您的视频。旋转必须在 90、180 或 270 度的一度范围内。如果轮换元数据指定任何其他轮换,服务将默认为无轮换。使用 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?
对于下面列出的一小部分功能,您仍然需要使用 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 作为旋转提供 - 您生成的视频将是正确的。
我也面临同样的问题。很长一段时间后,我们注意到 iosRotation
在video itself
. 因为它并不总是 90。它可能因使用(前/后)记录的相机而异
因此,要检查视频元中的旋转值,您可以使用mediainfo.js
通过使用库。无论您使用什么服务,您都可以获取视频信息并将相同的旋转值传递给 AWS 媒体转换/弹性转码器 JSON。通过这样做,它为我解决了问题。
尽管 MediaConvert 目前不支持自动旋转,但您仍然可以在 MediaConvert 中处理内容,然后将旋转元数据添加到生成的文件中。
如果您想将旋转信息添加回 MediaConvert 输出,请尝试使用 ffmpeg 或 exiftool 执行此操作。以下是一些示例命令:
ffmpeg -i EMC_OUTPUT.MOV -metadata:s:v rotate="-90" -c copy rotated.mov
或者
exiftool "-Rotation=90” rotated.mov