AWS CLI에서 AWS Elemental MediaLive 신속 생성

11361 단어 awscliMediaLiveAWS
새해 복 많이 받으세요
streampack risako입니다.
연말연시를 여유롭게 보냈나요?나는 별로 외출하지 않고 새해의 즐거움을 즐겼다.
2021년에도 다양한 것들을 흡수하고 Qiita에 남을 수 있도록 노력하겠습니다!
이번에는 AWS Elemental Medialive(이하 MediaLive) input 및 Channel AWS CLI (이하 CLI) 의 빠른 제작 방법 을 소개합니다.
AWS Management Console에서 제작하는 것보다 익숙해지면 CLI가 시간이 단축되기 때문에 여러 개를 제작하는 데 편리합니다.
미디어라이브 input와 channel을 자주 만드시는 분들은 꼭 참고하세요

입문

  • CLI로 MediaLive를 만들 때는 JSON 형식으로 기술된 설정 파일을 준비해야 합니다.
    미리 해 두어라.
  • 또한 이번에는 AWS Elemental MediaStore를 사용합니다.
    이쪽도 먼저 만들어야 돼.
  • 다음은 JSON 파일의 참조 예입니다.
    참고:
    JSON 파일은 첫 번째 문자를 대문자로 설정해야 합니다.
    소문자로 만들 때 오류가 발생하여 만들 수 없습니다.

    input 만들기

    {
        "Name": "test-input",
        "Type": "RTMP_PUSH",
        "InputSecurityGroups": [
            "000000"
        ],
        "Destinations": [
            {
            "StreamName": "hoge/stream"
          }
        ]
    }
    

    변경이 필요한 곳


    항목
    설명
    비고
    Name
    임의의 입력 이름 입력
    Type
    입력 유형 입력
    JSON의 Type 기재 방법은 여기
    InputSecurityGroups
    보안 그룹 ID 입력
    기존 보안 그룹이 있는 경우 ID 를 입력합니다.
    StreamName
    스트림 이름 입력
    이번에는 SINGLE _이것은 INPUT에서 생성된 것이지만 STANDARD_INPUT 시 2개가 기재됩니다.참고: Type에 따라 설정 내용이 변경됩니다.

    CLI에서 input 생성

    $aws medialive --profile <名前付きプロファイル名> create-input --region <作成するリージョン> --cli-input-json file://<JSONファイル名>
    
    【例】
    $aws medialive --profile xxxx create-input --region ap-northeast-1 --cli-input-json file://test-input.json
    

    채널 생성


    ABR은 간단한 채널 설정 예입니다.
    {
      "Name": "test-channel",
      "InputAttachments": [
        {
          "InputId": "xxxxx",
          "InputAttachmentName": "test-input",
          "InputSettings": {
            "SourceEndBehavior": "CONTINUE",
            "InputFilter": "AUTO",
            "FilterStrength": 1,
            "DeblockFilter": "DISABLED",
            "DenoiseFilter": "DISABLED",
            "AudioSelectors": [
              {
              "Name": "Audio1"
              }
          ],
            "CaptionSelectors": []
          }
        }
      ],
      "Destinations": [
        {
          "Id": "hlsdestin",
          "Settings": [
            {
              "Url": "mediastoressl://xxxx.data.mediastore.ap-northeast-1.amazonaws.com/demo/liveA"
            },
          ],
          "MediaPackageSettings": []
        }
      ],
      "EncoderSettings": {
        "AudioDescriptions": [
          {
            "AudioSelectorName": "Audio1",
            "CodecSettings": {
              "AacSettings": {
                "InputType": "NORMAL",
                "Bitrate": 128000,
                "CodingMode": "CODING_MODE_2_0",
                "RawFormat": "NONE",
                "Spec": "MPEG4",
                "Profile": "LC",
                "RateControlMode": "CBR",
                "SampleRate": 48000
              }
            },
            "AudioTypeControl": "FOLLOW_INPUT",
            "LanguageCodeControl": "FOLLOW_INPUT",
            "Name": "audio_mid"
          }
        ],
        "CaptionDescriptions": [],
        "OutputGroups": [
          {
            "OutputGroupSettings": {
              "HlsGroupSettings": {
                "AdMarkers": [],
                "CaptionLanguageSetting": "OMIT",
                "CaptionLanguageMappings": [],
                "HlsCdnSettings": {
                  "HlsMediaStoreSettings": {
                    "NumRetries": 10,
                    "ConnectionRetryInterval": 1,
                    "RestartDelay": 15,
                    "FilecacheDuration": 300,
                    "MediaStoreStorageClass": "TEMPORAL"
                  }
                },
                "InputLossAction": "EMIT_OUTPUT",
                "ManifestCompression": "NONE",
                "Destination": {
                  "DestinationRefId": "hlsdestin"
                },
                "IvInManifest": "INCLUDE",
                "IvSource": "FOLLOWS_SEGMENT_NUMBER",
                "ClientCache": "ENABLED",
                "TsFileMode": "SEGMENTED_FILES",
                "ManifestDurationFormat": "FLOATING_POINT",
                "SegmentationMode": "USE_SEGMENT_DURATION",
                "RedundantManifest": "DISABLED",
                "OutputSelection": "MANIFESTS_AND_SEGMENTS",
                "StreamInfResolution": "INCLUDE",
                "IFrameOnlyPlaylists": "DISABLED",
                "IndexNSegments": 15,
                "ProgramDateTime": "EXCLUDE",
                "ProgramDateTimePeriod": 600,
                "KeepSegments": 30,
                "SegmentLength": 2,
                "TimedMetadataId3Frame": "PRIV",
                "TimedMetadataId3Period": 10,
                "HlsId3SegmentTagging": "DISABLED",
                "CodecSpecification": "RFC_4281",
                "DirectoryStructure": "SINGLE_DIRECTORY",
                "SegmentsPerSubdirectory": 10000,
                "Mode": "LIVE"
              }
            },
            "Name": "HLS Group",
            "Outputs": [
              {
                "OutputSettings": {
                  "HlsOutputSettings": {
                    "NameModifier": "_mid",
                    "HlsSettings": {
                      "StandardHlsSettings": {
                        "M3u8Settings": {
                          "AudioFramesPerPes": 4,
                          "AudioPids": "492-498",
                          "NielsenId3Behavior": "NO_PASSTHROUGH",
                          "PcrControl": "PCR_EVERY_PES_PACKET",
                          "PmtPid": "480",
                          "ProgramNum": 1,
                          "Scte35Pid": "500",
                          "Scte35Behavior": "NO_PASSTHROUGH",
                          "TimedMetadataPid": "502",
                          "TimedMetadataBehavior": "NO_PASSTHROUGH",
                          "VideoPid": "481"
                        },
                        "AudioRenditionSets": "program_audio"
                      }
                    },
                    "H265PackagingType": "HVC1"
                  }
                },
                "OutputName": "mid",
                "VideoDescriptionName": "video_mid",
                "AudioDescriptionNames": [
                  "audio_mid"
                ],
                "CaptionDescriptionNames": []
              }
            ]
          }
        ],
        "TimecodeConfig": {
          "Source": "EMBEDDED"
        },
        "VideoDescriptions": [
          {
            "CodecSettings": {
              "H264Settings": {
                  "AfdSignaling": "NONE",
                  "ColorMetadata": "INSERT",
                  "AdaptiveQuantization": "MEDIUM",
                  "Bitrate": 2000000,
                  "EntropyEncoding": "CABAC",
                  "FlickerAq": "ENABLED",
                  "FramerateControl": "SPECIFIED",
                  "FramerateNumerator": 30,
                  "FramerateDenominator": 1,
                  "GopBReference": "DISABLED",
                  "GopClosedCadence": 1,
                  "GopNumBFrames": 1,
                  "GopSize": 2,
                  "GopSizeUnits": "SECONDS",
                  "SubgopLength": "FIXED",
                  "ScanType": "PROGRESSIVE",
                  "Level": "H264_LEVEL_AUTO",
                  "LookAheadRateControl": "MEDIUM",
                  "NumRefFrames": 1,
                  "ParControl": "INITIALIZE_FROM_SOURCE",
                  "Profile": "MAIN",
                  "RateControlMode": "CBR",
                  "Syntax": "DEFAULT",
                  "SceneChangeDetect": "ENABLED",
                  "SpatialAq": "ENABLED",
                  "TemporalAq": "ENABLED",
                  "TimecodeInsertion": "DISABLED"
                }
          },
            "Height": 720,
            "Name": "video_mid",
            "RespondToAfd": "NONE",
            "Sharpness": 50,
            "ScalingBehavior": "DEFAULT",
            "Width": 1280
          }
        ]
      },
      "RoleArn": "arn:aws:iam::xxxxx:role/MediaLiveAccessRole",
      "InputSpecification": {
        "Codec": "AVC",
        "Resolution": "HD",
        "MaximumBitrate": "MAX_20_MBPS"
      },
      "LogLevel": "ERROR",
      "Tags": {},
      "ChannelClass": "SINGLE_PIPELINE"
    }
    

    변경이 필요한 곳


    항목
    설명
    비고
    Name
    채널 이름
    InputId
    방금 생성한 InputID
    Url
    mediastore 데이터 endpoint
    https://가 아닌mediastoressl://로 변경해야 합니다.
    AudioDescriptions
    사운드 비트레이트 등 사운드 관련 설정 입력
    VideoDescriptions
    Bitrate, Frame Rate, 해상도 등 영상 관련 설정 입력
    RoleArn
    미디어 실시간 액세스 권한이 있는 IAMROle
    생성되지 않으면 먼저 생성해야 합니다.
    ChannelClass
    수량 입력
    SINGLE_PIPELINEE 또는 STANDARD

    CLI로 채널 만들기!

    $ aws medialive --profile <名前付きプロファイル名>  create-channel --region <作成するリージョン> --cli-input-json file://<JSONファイル名>
    
    【例】
    $ aws medialive --profile xxxx create-channel --region ap-northeast-1 --cli-input-json file://test-channel.json
    
    이로써 제작 종료!
    콘솔 화면에 생성된 입력 또는 채널이 성공적으로 생성되었습니다!
    동일한 구성의 여러 채널을 만들 때 템플릿을 준비하는 것이 유용합니다.
    이번에도 읽어주셔서 감사합니다

    참고 자료

    좋은 웹페이지 즐겨찾기