如何阻止 AWS Elemental MediaConvert 截断音频的安静部分?

问题描述 投票:0回答:1

基本上我在这里提到了同样的问题:https://repost.aws/questions/QUp6krkiXUSmu6YMln7dnHdw/aws-media-convert-removes-silent-audio-which-causes-the-output-video-to-be-severly -与音频不同步。该帖子没有给出答案,声称这是一个内部 MediaConvert 错误,已得到修复。

我有一个 66 秒长的 .mka 音频文件,由 Twilio 的视频室录制 API 生成。我想将其转换为 AWS Transcribe 接受的格式,因此我使用 AWS Elemental MediaConvert 将其转换为 mp4(转换为 mp3 也可以)。

输入文件是一段录音,主要是非常安静的背景噪音,但最后几秒钟有语音。 AWS Elemental MediaConvert 似乎会砍掉不包含语音的初始部分,返回一个长度仅为 14 秒的 mp4,对应于输入的最后 14 秒。

但我希望输出文件与输入文件的长度相同。我该如何实现这个目标?

这是我的 MediaConvert 模板:

{
  "Name": "Experimental job",
  "Settings": {
    "TimecodeConfig": {
      "Source": "ZEROBASED"
    },
    "OutputGroups": [
      {
        "CustomName": "My audio file group",
        "Name": "File Group",
        "Outputs": [
          {
            "ContainerSettings": {
              "Container": "MP4",
              "Mp4Settings": {}
            },
            "AudioDescriptions": [
              {
                "AudioSourceName": "Audio Selector 1",
                "CodecSettings": {
                  "Codec": "AAC",
                  "AacSettings": {
                    "Bitrate": 96000,
                    "CodingMode": "CODING_MODE_2_0",
                    "SampleRate": 48000
                  }
                }
              }
            ]
          }
        ],
        "OutputGroupSettings": {
          "Type": "FILE_GROUP_SETTINGS",
          "FileGroupSettings": {
            "Destination": "my-output-bucket",
            "DestinationSettings": {
              "S3Settings": {
                "StorageClass": "STANDARD"
              }
            }
          }
        }
      }
    ]
  },
  "AccelerationSettings": {
    "Mode": "DISABLED"
  },
  "StatusUpdateInterval": "SECONDS_60",
  "Priority": 0,
  "HopDestinations": []
}

还有我的 MediaConvert 参数:

{
        "Queue": MY_MEDIA_CONVERT_QUEUE_ARN,
        "JobTemplate": "Experimental job",
        "Role": MY_MEDIA_CONVERT_ROLE_ARN,
        "Settings": {
            "Inputs": [
                {
                "AudioSelectors": {
                    "Audio Selector 1": {
                        "Offset": 1,
                        "DefaultSelection": "NOT_DEFAULT",
                        "ProgramSelection": 1,
                        "SelectorType": "TRACK",
                        "Tracks": [1]
                    }
                },
                
                "VideoSelector": {
                  "ColorSpace": "FOLLOW"
                },

                "FilterEnable": "AUTO",
                "PsiControl": "USE_PSI",
                "FilterStrength": 0,
                "DeblockFilter": "DISABLED",
                "DenoiseFilter": "DISABLED",
                "TimecodeSource": "EMBEDDED",
                "FileInput": "my-input-file"
                }
            ]
        },
        "UserMetadata": "mymetadata"
}

我尝试在我的模板中添加一个如下所示的InputGroup,但没有帮助:

    "Inputs": [
      {
        "AudioSelectors": {
          "Audio Selector 1": {
            "DefaultSelection": "DEFAULT",
            "SelectorType": "TRACK",
            "AudioDurationCorrection": "TRACK"
          }
        },
        "TimecodeSource": "ZEROBASED"
      }
    ]

我应该采取什么不同的做法?

编辑:我发现当使用ffmpeg在命令行上将文件从mka转码为mp3时,我必须使用选项

-af aresample=async=1
,按照这个答案:https://stackoverflow.com/a/ 52847587/3310775。这样做会产生正确长度的输出文件。但这对应什么 MediaConvert 设置?

编辑:我也接受使用 AWS Elastic Transcoder 来完成此操作的设置。

amazon-web-services transcoding aws-media-convert matroska
1个回答
0
投票
  • MediaConvert
    可能会 从输出视频中删除无声音轨,这可能会导致输出视频与其音频中的音频不同步
    normalization
    功能 - 防止此行为设置
    audio normalization algorithm to ITU-R BS.1770-4
    和的可能解决方法校正类型为
    MEASURE_ONLY
    以及
    audio normalization
    MediaConvert
    功能支持
    ITU-R BS.1770-1, -2, -3, and -4 standard algorithms
    ,并允许所选
    algorithm
    仅产生响度测量。它还允许记录响度级别并将这些日志存储在
    S3
    中。

  • 修改模板以在

    audio normalization
    部分下包含
    AudioDescriptions
    设置

"AudioDescriptions": [
  {
    "AudioSourceName": "Audio Selector 1",
    "CodecSettings": {
      "Codec": "AAC",
      "AacSettings": {
        "Bitrate": 96000,
        "CodingMode": "CODING_MODE_2_0",
        "SampleRate": 48000
      }
    },
    "AudioNormalizationSettings": {
      "Algorithm": "ITU_BS_1770_4",
      "AlgorithmControl": "MEASURE_ONLY",
      "LoudnessLogging": "LOG"
    }
  }
]
  • 像上面一样运行并检查日志。您应该在日志文件中看到每个音轨的输入最大响度值。如果该值低于
    -50 dB,
    ,该曲目将被视为静音,并且可以通过
    MediaConvert
    删除。
  • 如果您想在输出文件中保留无声音轨,请使用
    ffmpeg
    等工具增加输入文件的响度级别,或使用
    AWS Elastic Transcoder to mp4 or mp3
    等其他服务。后者没有
    audio normalization
    功能,因此它应该在输出文件中保留无声音轨。
© www.soinside.com 2019 - 2024. All rights reserved.