MediaConvert разделяет видео на несколько фрагментов, но разной длительности

#amazon-s3 #aws-lambda #aws-media-convert

#amazon-s3 #aws-lambda #aws-media-convert

Вопрос:

У меня есть одно видео со временем 1 час.

я хочу разделить видео на разные части по указанному диапазону.

пример:

  1. от 0 до 10 минут
  2. от 10 до 40 минут
  3. от 40 до 60 минут

Я знаю, что это возможно с помощью ffmpeg, но я хочу сделать это с помощью MediaConvert.

вот пример для ffmpeg, но то же самое я хочу сделать с помощью MediaConvert

 ffmpeg -i input.mp4 -c copy -f segment -segment_times 0,600,2400 output%d.mp4
  

Ответ №1:

Вы можете выполнить это, используя обрезку ввода в MediaConvert. Вам нужно будет создать несколько заданий, чтобы получить желаемый диапазон отсечения входных данных и выходных данных.

В настройках задания входные блоки будут выглядеть примерно следующим образом.

Задание 1

 "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",
        "FileInput": "s3://bucket/media.mp4",
        "InputClippings": [
          {
            "StartTimecode": "00:00:00:00",
            "EndTimecode": "00:10:00:00"
          }
        ]
      }
    ]
  

Задание 2

     "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",
        "FileInput": "s3://bucket/media.mp4",
        "InputClippings": [
          {
            "StartTimecode": "00:10:00:00",
            "EndTimecode": "00:40:00:00"
          }
        ]
      }
    ]
  

Задание 3

     "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",
        "FileInput": "s3://bucket/media.mp4",
        "InputClippings": [
          {
            "StartTimecode": "00:40:00:00",
            "EndTimecode": "01:00:00:00"
          }
        ]
      }
    ]
  

Здесь следует отметить, что области отсечения основаны на временном коде входного источника. В моем примере я установил для источника тайм-кода значение с нулевой базой, это означает, что служба запустит тайм-код с 0 и поставит галочку вверх. У вас есть возможность указать начальный таймкод или использовать встроенный таймкод в файле.

Обратите внимание, что таймкод должен быть в синтаксисе SMPTE (ЧАСЫ: МИНУТЫ: СЕКУНДЫ: КАДРЫ) [2]

== Документация ==

[1] https://docs.aws.amazon.com/mediaconvert/latest/ug/assembling-multiple-inputs-and-input-clips.html

[2] https://en.wikipedia.org/wiki/SMPTE_timecode