如何在 AWS Elemental MediaConvert 上转码带有 SRT 字幕的 MP4 视频

问题描述

我有一个带 SRT 字幕的 MP4 视频,我需要使用媒体转换器对它们进行转码。在媒体转换中,我设置了自动 ABR 并指定了 SRT 原始路径。

目前,我已经测试了以下内容:

  • 我在一个输出中设置了 SRT 文件,在另一个中设置了视频/音频
  • 我在同一个输出中设置了 SRT、视频和音频

对于第一次测试,作业成功完成,但在 S3 存储桶上没有任何 .SRT 文件。对于第二个测试,作业失败并显示“选项目标类型 [SRT] 需要原始多路复用器”。留言

这是我第一次测试的 JSON

{
  "Queue": "arn:aws:mediaconvert:us-east-1:{{ACCOUNT-NUMBER}}:queues/Default","UserMetadata": {},"Role": "arn:aws:iam::{{ACCOUNT-NUMBER}}:role/{{MY-ROLE-NAME}}","Settings": {
    "TimecodeConfig": {
      "Source": "ZEROBASED"
    },"OutputGroups": [
      {
        "Name": "DASH ISO","Outputs": [
          {
            "ContainerSettings": {
              "Container": "MPD"
            },"VideoDescription": {
              "ScalingBehavior": "DEFAULT","TimecodeInsertion": "DISABLED","AntiAlias": "ENABLED","Sharpness": 50,"CodecSettings": {
                "Codec": "H_264","H264Settings": {
                  "InterlaceMode": "PROGRESSIVE","ScanTypeConversionMode": "INTERLACED","NumberReferenceFrames": 3,"Syntax": "DEFAULT","Softness": 0,"GopClosedCadence": 1,"GopSize": 90,"Slices": 1,"GopBReference": "DISABLED","SlowPal": "DISABLED","EntropyEncoding": "CABAC","FramerateControl": "INITIALIZE_FROM_SOURCE","RateControlMode": "QVBR","CodecProfile": "MAIN","Telecine": "NONE","MinIInterval": 0,"AdaptiveQuantization": "AUTO","CodecLevel": "AUTO","FieldEncoding": "PAFF","SceneChangeDetect": "ENABLED","QualityTuningLevel": "MULTI_PASS_HQ","FramerateConversionAlgorithm": "DUPLICATE_DROP","UnregisteredSeiTimecode": "DISABLED","GopSizeUnits": "FRAMES","ParControl": "INITIALIZE_FROM_SOURCE","NumberBFramesBetweenReferenceFrames": 2,"RepeatPps": "DISABLED","DynamicSubGop": "STATIC"
                }
              },"AfdSignaling": "NONE","DropFrameTimecode": "ENABLED","RespondToAfd": "NONE","ColorMetadata": "INSERT"
            },"AudioDescriptions": [
              {
                "AudioTypeControl": "FOLLOW_INPUT","AudioSourceName": "Audio Selector 1","CodecSettings": {
                  "Codec": "AAC","AacSettings": {
                    "AudioDescriptionBroadcasterMix": "NORMAL","Bitrate": 96000,"RateControlMode": "CBR","CodecProfile": "LC","CodingMode": "CODING_MODE_2_0","RawFormat": "NONE","SampleRate": 48000,"Specification": "MPEG4"
                  }
                },"StreamName": "latino","LanguageCodeControl": "FOLLOW_INPUT","LanguageCode": "SPA"
              }
            ]
          },{
            "ContainerSettings": {
              "Container": "MPD"
            },"CaptionDescriptions": [
              {
                "CaptionSelectorName": "Captions Selector 1","DestinationSettings": {
                  "DestinationType": "SRT"
                },"LanguageCode": "SPA","LanguageDescription": "latino"
              }
            ]
          }
        ],"OutputGroupSettings": {
          "Type": "DASH_ISO_GROUP_SETTINGS","DashIsoGroupSettings": {
            "SegmentLength": 30,"MinFinalSegmentLength": 0,"Destination": "s3://{{BUCKET-NAME}}/streaming15/dash-iso/","FragmentLength": 2,"SegmentControl": "SINGLE_FILE","MpdProfile": "ON_DEMAND_PROFILE","HbbtvCompliance": "NONE"
          }
        },"AutomatedEncodingSettings": {
          "AbrSettings": {
            "MaxAbrBitrate": 8000000,"MinAbrBitrate": 600000
          }
        }
      }
    ],"AdAvailOffset": 0,"Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "Offset": 0,"DefaultSelection": "DEFAULT","ProgramSelection": 1
          }
        },"VideoSelector": {
          "ColorSpace": "FOLLOW","Rotate": "DEGREE_0","AlphaBehavior": "DISCARD"
        },"FilterEnable": "AUTO","PsiControl": "USE_PSI","FilterStrength": 0,"DeblockFilter": "DISABLED","DenoiseFilter": "DISABLED","InputScanType": "AUTO","TimecodeSource": "ZEROBASED","CaptionSelectors": {
          "Captions Selector 1": {
            "SourceSettings": {
              "SourceType": "SRT","FileSourceSettings": {
                "SourceFile": "s3://{{BUCKET-NAME}}/PROMO_CAP_01.srt"
              }
            }
          }
        },"FileInput": "s3://{{BUCKET-NAME}}/PROMO_CAP_01.mp4"
      }
    ]
  },"AccelerationSettings": {
    "Mode": "DISABLED"
  },"StatusUpdateInterval": "SECONDS_60","Priority": 0
}

我缺少什么?

解决方法

根据 AWS Elemental MediaConvert 用户指南,当输入字幕类型为 SRT 时,DASH-ISO 输出组不支持 SRT 输出。

这是该指南的链接(参考第 176 页): https://docs.aws.amazon.com/mediaconvert/latest/ug/mediaconvert-guide.pdf

DASH-ISO 中 SRT 输入支持的字幕输出为:

  • 燃烧
  • IMSC(作为 sidecar .fmp4)
  • IMSC(作为 sidecar .xml)
  • TTML(作为 sidecar .fmp4)
  • TTML(作为 sidecar .ttml)

此外,文档中存在空白。支持 SRT->DASH-ISO+WebVTT,即使它没有列出。文档将得到更正,但我想与您分享,以防万一。

如果您必须将 SRT 发送到输出目的地,那么您可以创建一个单独的输出组,其中字幕位于没有容器的轨道中(请参阅文档中的第 192-196 页)。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...