실시간 스트림 설정 구성하기

이 페이지에서는 여러 오디오 트랙, 자막, 스프라이트 시트와 같은 실시간 스트림 기능의 입력 엔드포인트 또는 채널 생성 중에 설정을 구성하는 방법을 설명합니다.

입력 엔드포인트 생성을 통해 구성

입력 엔드포인트 생성 중에 다음 기능의 구성을 지정할 수 있습니다.

IP 허용 목록

인코더 IP 주소와 같이 입력 스트림을 시작해야 하는 IP 범위를 지정하여 입력 엔드포인트에 대한 액세스를 제한할 수 있습니다. 동영상 파이프라인은 이 범위에 있는 IP 주소의 트래픽만 허용합니다. IP 범위는 CIDR 블록 형식이어야 합니다.

Input 리소스에서 securityRules 필드를 구성합니다.

{
  "type": "RTMP_PUSH",
  "securityRules": {
    "ipRanges": ["1.2.3.4/32"]
  }
}

채널 생성을 통해 구성

채널 생성 중에 다음 기능의 구성을 지정할 수 있습니다.

여러 비트 전송률 스트림

여러 비트 전송률, 해상도, 프레임 속도를 지원하는 고급 채널 구성을 만들 수 있습니다. 다음 구성은 출력에 muxStream 두 개를 포함하며, 하나는 프레임 속도가 30FPS(mux_video_360p30)인 360p이고, 다른 하나는 프레임 속도가 60FPS(mux_video_720p60)인 720p입니다. 이 구성은 여러 오디오 비트 전송률도 지원합니다. 자세한 내용은 권장 비트 전송률을 참조하세요.

{
  "inputAttachments":[
    {
      "key":"input-primary",
      "input": "projects/PROJECT_NUMBER/locations/LOCATION/inputs/INPUT_ID"
    }
  ],
  "output":{
    "uri": "gs://BUCKET_NAME"
  },
  "elementaryStreams": [
    {
      "key": "es_video_720p60",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 5500000,
          "frameRate": 60
        }
      }
    },
    {
      "key": "es_video_360p30",
      "videoStream": {
        "h264": {
          "profile": "high",
          "heightPixels": 360,
          "widthPixels": 640,
          "bitrateBps": 400000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_audio_160k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 160000
      }
    },
    {
      "key": "es_audio_64k",
      "audioStream": {
        "codec": "aac",
        "channelCount": 2,
        "bitrateBps": 64000
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video_720p60",
      "elementaryStreams": [
        "es_video_720p60"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_video_360p30",
      "elementaryStreams": [
        "es_video_360p30"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_160k",
      "elementaryStreams": [
        "es_audio_160k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    },
    {
      "key": "mux_audio_64k",
      "elementaryStreams": [
        "es_audio_64k"
      ],
      "segmentSettings": {
        "segmentDuration": "2s"
      }
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "fileName": "main.mpd",
      "type": "DASH",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    },
    {
      "key": "manifest_hls",
      "fileName": "main.m3u8",
      "type": "HLS",
      "muxStreams": [
        "mux_video_720p60",
        "mux_video_360p30",
        "mux_audio_160k",
        "mux_audio_64k"
      ],
      "maxSegmentCount": 5
    }
  ]
}

여러 오디오 트랙

입력 스트림에 오디오 트랙이 두 개 이상 포함된 경우 AudioMapping 객체를 사용하여 각 AudioStream의 트랙을 선택합니다.

{
  "inputAttachments": [
    {
      "key": "MY-INPUT",
      "input": "/projects/PROJECT-ID/locations/LOCATION/inputs/MY-INPUT",
    }
  ],
  "output": {
    "uri": "gs://BUCKET_NAME/outputs/"
  },
  "elementaryStreams": [
    {
      "key": "es_video",
      "videoStream": {
        "h264": {
          "heightPixels": 720,
          "widthPixels": 1280,
          "bitrateBps": 3000000,
          "frameRate": 30
        }
      }
    },
    {
      "key": "es_first_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 1
          }
        ]
      }
    },
    {
      "key": "es_second_audio",
      "audioStream": {
        "codec": "aac",
        "bitrateBps": 160000,
        "mapping": [
          {
            "inputKey": "MY-INPUT",
            "inputTrack": 2
          }
        ]
      }
    }
  ],
  "muxStreams": [
    {
      "key": "mux_video",
      "elementaryStreams": ["es_video"],
    },
    {
      "key": "mux_first_audio",
      "elementaryStreams": ["es_first_audio"],
    },
    {
      "key": "mux_second_audio",
      "elementaryStreams": ["es_second_audio"],
    }
  ],
  "manifests": [
    {
      "key": "manifest_dash",
      "type": "DASH",
      "muxStreams": [
        "mux_video",
        "mux_first_audio",
        "mux_second_audio",
      ]
    }
  ]
}

Shaka Player에서는 오디오 트랙이 여러 개 있는 HLS 스트림의 다음 기능을 지원하지 않습니다.

  • TS 세그먼트를 사용하여 대체 오디오 트랙 재생

  • fMP4 세그먼트가 있는 보조 및 대체 오디오 트랙 선택

CEA 608/708 자막 패스 스루

입력 스트림에 CEA 608/708 자막이 포함된 경우 자막을 출력 스트림으로 전달할 수 있습니다. Channel을 만들 때 elementaryStreams에 다음 textStream을 추가합니다. 이 textStream은 CEA 608/708 자막을 모든 출력 동영상 스트림 및 렌더링에 삽입합니다.

{
  "key": "captions",
  "textStream": {
    "codec": "cea608"
  }
}

스프라이트 시트

스프라이트 시트를 생성하려면 Channel 리소스에서 spriteSheets 필드를 구성합니다.

{
  "spriteSheets": [
    {
      "format": "jpeg",
      "filePrefix": "sprite",
      "interval": "2s",
      "spriteWidthPixels": 320,
      "spriteHeightPixels": 240,
      "columnCount": 3,
      "rowCount": 3,
      "quality": 80
    }
  ]
}