首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AWS MediaConvert根据视频大小生成缩略图的数量

使用AWS MediaConvert根据视频大小生成缩略图的数量
EN

Stack Overflow用户
提问于 2020-11-30 23:52:19
回答 1查看 772关注 0票数 0

阅读此article后,我感觉到AWS media convert作业模板不能再用于生成任意视频大小的缩略图。本文假设我们知道预先上传的视频的大小/持续时间,因此我们需要的缩略图的数量。

我要找的是生成一个基于视频大小的随机数量的缩略图(例如,大视频的大量缩略图和小视频的少量缩略图)。我使用lambda触发器和ffmpeg lambda层来处理这个解决方案,但是对于超过150MB的视频,lambda函数超时(最多15分钟)(因为从s3存储桶中读取视频需要时间)。

我有哪些选项来处理大量视频,生成数量可变的缩略图,合并这些拇指以生成精灵?

我尝试使用lambda触发器和ffmpeg/ffprob来生成sprite,但它有超时问题。现在我已经设置了一个云观看事件规则,在mediaconvert作业状态改变(已完成)时触发lambda函数,并合并拇指以生成sprite,它看起来要轻得多,但我需要任意数量的拇指。

EN

回答 1

Stack Overflow用户

发布于 2020-12-01 09:11:45

您可以从使用MediaInfo切换到ffprobe 1。这可以获得输入文件的持续时间和文件大小。在此基础上,您可以使用本文中的计算结果并使用MediaConvert创建您的精灵图像。在作业完成之后,您可以使用COMPLETE CloudWatch事件来触发可以创建sprite清单的后处理工作流。默认情况下,COMPLETE details部分将包括从MediaConvert输出2捕获的最后一个JPEG帧的输出路径。

作为预处理步骤,您可以收集文件的持续时间和大小。如果您只需要文件的大小,那么您可以使用S3开发工具包来获取文件的内容长度(调用HEAD to the object)并从那里开始计算。

代码语言:javascript
复制
s3 = boto3.client('s3')
response = s3.head_object(Bucket='bucket', Key='keyname')
size = response['ContentLength']
print(size)

您还可以在作业模板中使用参数替代。例如,您可以创建引用模板的作业,但是可以通过调用CreateJob API来指定覆盖这些设置的设置。

以下是预设,但同样的概念也适用于作业模板。

使用以下HLS系统预设

代码语言:javascript
复制
System-Avc_16x9_720p_29_97fps_3500kbps    
System-Avc_16x9_360p_29_97fps_1200kbps
System-Avc_16x9_270p_14_99fps_400kbps

JSON有效负载更改输出2 (System-Avc_16x9_360p_29_97fps_1200kbps)和输出3 (System-Avc_16x9_270p_14_99fps_400kbps)的音频选择器来源名称

代码语言:javascript
复制
{
  "Queue": "arn:aws:mediaconvert:us-west-2:111122223333:queues/Default",
  "UserMetadata": {},
  "Role": "arn:aws:iam::111122223333:role/EMFRoleSPNames",
  "Settings": {
    "OutputGroups": [
      {
        "Name": "Apple HLS",
        "Outputs": [
          {
            "NameModifier": "_1",
            "Preset": "System-Avc_16x9_720p_29_97fps_3500kbps"    
          },
          {
            "NameModifier": "_2",
            "Preset": "System-Avc_16x9_360p_29_97fps_1200kbps",
             "AudioDescriptions": [
              {
                "AudioSourceName": "Audio Selector 2"
              }
            ]
          },
          {
            "NameModifier": "_3",
            "Preset": "System-Avc_16x9_270p_14_99fps_400kbps",
            "AudioDescriptions": [
              {
                "AudioSourceName": "Audio Selector 2"
              }
            ]
          }
        ],
        "OutputGroupSettings": {
          "Type": "HLS_GROUP_SETTINGS",
          "HlsGroupSettings": {
            "ManifestDurationFormat": "INTEGER",
            "SegmentLength": 10,
            "TimedMetadataId3Period": 10,
            "CaptionLanguageSetting": "OMIT",
            "Destination": "s3://myawsbucket/out/master",
            "TimedMetadataId3Frame": "PRIV",
            "CodecSpecification": "RFC_4281",
            "OutputSelection": "MANIFESTS_AND_SEGMENTS",
            "ProgramDateTimePeriod": 600,
            "MinSegmentLength": 0,
            "DirectoryStructure": "SINGLE_DIRECTORY",
            "ProgramDateTime": "EXCLUDE",
            "SegmentControl": "SEGMENTED_FILES",
            "ManifestCompression": "NONE",
            "ClientCache": "ENABLED",
            "StreamInfResolution": "INCLUDE"
          }
        }
      }
    ],
    "Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "Offset": 0,
            "DefaultSelection": "DEFAULT",
            "ProgramSelection": 1,
            "SelectorType": "TRACK",
            "Tracks": [
              1
            ]
          },
          "Audio Selector 2": {
            "Offset": 0,
            "DefaultSelection": "NOT_DEFAULT",
            "ProgramSelection": 1,
            "SelectorType": "TRACK",
            "Tracks": [
              2
            ]
          }
        },
        "VideoSelector": {
          "ColorSpace": "FOLLOW"
        },
        "FilterEnable": "AUTO",
        "PsiControl": "USE_PSI",
        "FilterStrength": 0,
        "DeblockFilter": "DISABLED",
        "DenoiseFilter": "DISABLED",
        "TimecodeSource": "EMBEDDED",
        "FileInput": "s3://myawsbucket/input/test.mp4"
      }
    ],
    "TimecodeConfig": {
      "Source": "EMBEDDED"
    }
  }
}

==资源==

1

2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65076791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档