3. StreamLink Flow 연결
On this page
StreamLink에서 인코더의 원본 신호를 수신하고, 앞 단계에서 만든 StreamLive 입력으로 전달합니다. 이 단계의 목표는 해상도 변환이 아니라 입력과 출력의 전송 연결입니다.
사전 준비
- 2. StreamLive 입력과 채널을 완료합니다.
- StreamLive RTMP 입력의 서버 주소와 Stream Key를 준비합니다.
- 인코더의 공인 IP와 입력 접근 정책을 확인합니다.
- StreamLive 보안 그룹에는 StreamLive에 실제 접속하는 StreamLink 출력 측 주소가 허용되어야 합니다. 인코더 IP만 허용하면 중계 구간에서 연결이 막힐 수 있습니다.
- 이 가이드는 서울 리전과 RTMP 전송을 기준으로 합니다.
연결 구조
| 주소 | 입력하는 곳 | 용도 |
|---|---|---|
| StreamLink 입력 서버 주소와 키 | 원본 인코더 | 인코더가 StreamLink로 송출 |
| StreamLive 입력 서버 주소와 키 | StreamLink Output | StreamLink가 StreamLive로 중계 |
| StreamPackage 채널 ID | StreamLive 출력 그룹 | 트랜스코딩 결과의 패키징 목적지 |
| CSS 재생 URL | 시청자 플레이어 | 패키징된 영상 재생 |
같은 RTMP를 사용하더라도 StreamLink 입력 주소와 StreamLive 입력 주소는 서로 다른 연결입니다.
1. Event와 Flow 선택
StreamLink 콘솔에서 작업할 Event를 선택한 뒤 Flow management → Create로 이동합니다. 신규 작업은 기존 서비스와 구분되는 Event 및 Flow 이름을 사용합니다.
| 설정 | 예시 | 확인 사항 |
|---|---|---|
| Flow name | demo_flow | 전송 경로를 구분하는 이름 |
| Region | Seoul | 원본과 수신 서비스의 위치 |
| Max bandwidth | 입력 비트레이트보다 여유 있게 선택 | 원본 비트레이트와 네트워크 여유 |
생성된 Flow에는 아직 입력과 출력 연결이 없을 수 있습니다. 다음 단계에서 두 연결을 구성합니다.
2. RTMP 입력 추가
- 대상 Flow에서 Add input을 선택합니다.
- 이름과 입력 리전 / 가용 영역을 지정합니다.
- 콘솔의 프로토콜 유형을 RTMP_PUSH로 선택합니다.
- 보안 그룹에서 원본 인코더의 공인 IP만 허용합니다.
- 저장한 뒤 생성된 입력 주소와 Stream Key를 확인합니다.
이 입력은 인코더가 접속하여 영상을 보내는 주소입니다. 입력 이중화는 두 송출 경로를 준비한 경우 별도로 구성합니다.
3. StreamLive로 보낼 출력 추가
- 같은 Flow에서 Add Output을 선택합니다.
- 출력 유형을 Pinpoint, 프로토콜을 RTMP_PUSH로 선택합니다.
- 출력 리전과 가용 영역을 확인합니다.
- Destination URL에 StreamLive RTMP 서버 주소를 입력합니다.
- Stream key에 StreamLive 입력의 Stream Key를 별도로 입력하고 저장합니다.
| StreamLive 입력 정보 | StreamLink 출력 필드 |
|---|---|
| 서버 주소: rtmp://YOUR_STREAMLIVE_HOST/demo | Destination URL |
| 스트림 이름: demo_stream | Stream key |
실제 콘솔에서 제공하는 값을 기준으로 설정합니다.
4. Flow 시작과 확인
대상 Flow의 입력과 출력을 다시 확인한 뒤 우측 상단의 Start를 선택합니다. 입력 / 출력 항목을 클릭하면 각 연결의 상세 정보를 확인할 수 있습니다.
| 확인 지점 | 정상 여부 판단 |
|---|---|
| Flow 설정 | 올바른 입력과 StreamLive 목적지가 연결됨 |
| 인코더 송출 | StreamLink 입력으로 지속 송출 |
| StreamLink 입력 / 출력 | 수신과 목적지 전송 상태 확인 |
| StreamLive 입력 | 중계된 원본 신호 수신 |
| 최종 재생 | 다음 단계에서 원본 및 CDN 영상 / 오디오 확인 |
RUNNING은 실행 상태입니다. 입력 신호가 존재하고 목적지까지 전달되는지는 별도로 검사합니다.
테스트 종료
테스트 종료 후 해당 Flow에서 Stop을 선택합니다. 참조 관계를 확인한 뒤 테스트 전용 리소스를 정리합니다.
다음은 4. 송출하고 재생 확인하기입니다.
공식 문서
API로 구성하는 경우
다음은 기존 API 호출 형식의 예시입니다. 마스킹된 ID / 주소 / 키와 설명용 IP는 실제 값으로 변경해야 합니다.
콘솔의 RTMP_PUSH 표시와 아래 기존 API 예시의 Protocol: RTMP 표기를 구분합니다. API 값은 사용 중인 API / SDK의 입력 스키마를 확인하고 적용합니다.
Flow 생성
tccli mdc CreateStreamLinkFlow \
--region ap-seoul \
--FlowName demo_flow \
--MaxBandwidth 20000000{
"FlowId": "82iv************74eg"
}입력 생성
인코더가 푸시할 RTMP 입력입니다.
tccli mdc CreateStreamLinkInput \
--region ap-seoul \
--FlowId 82iv************74eg \
--InputGroup '[
{
"InputName": "demo_input",
"Protocol": "RTMP",
"Description": "Demo RTMP ingest",
"AllowIpList": ["203.0.113.10/32"]
}
]'조회 응답에서 푸시 주소를 확인합니다.
tccli mdc DescribeStreamLinkFlow \
--region ap-seoul \
--FlowId 82iv************74eg{
"InputGroup": [
{
"InputName": "demo_input",
"Protocol": "RTMP_PUSH",
"InputAddressList": [
{
"Ip": "192.0.2.10",
"Port": 1935
}
],
"RTMPSettings": {
"AppName": "live_13******46",
"StreamKey": "7rvp****31j2o"
}
}
]
}즉 인코더에 넣을 값은 다음과 같습니다.
URL rtmp://192.0.2.10:1935/live_13******46
StreamKey 7rvp****31j2o출력 생성 (StreamLive로 릴레이)
출력 프로토콜은 RTMP, 목적지는 2단계에서 만든 StreamLive 입력 주소입니다.
tccli mdc CreateStreamLinkOutputInfo \
--region ap-seoul \
--FlowId 82iv************74eg \
--Output '{
"OutputName": "demo_output",
"Description": "Demo relay to StreamLive",
"Protocol": "RTMP",
"OutputRegion": "ap-seoul",
"RTMPSettings": {
"Destinations": [
{
"Url": "rtmp://13******46.ap-seoul-1.streamlive.myqcloud.com/demo",
"StreamKey": "quickstart"
}
]
}
}'Url에는 AppName(demo)까지, StreamKey에는 스트림 이름(quickstart)을 입력합니다.
Flow 시작
tccli mdc StartStreamLinkFlow \
--region ap-seoul \
--FlowId 82iv************74egtccli mdc DescribeStreamLinkFlow \
--region ap-seoul \
--FlowId 82iv************74egFlow demo_flow 82iv************74eg RUNNING
IN demo_input RTMP_PUSH 192.0.2.10:1935
OUT demo_output RTMP rtmp://13******46.ap-seoul-1.streamlive.myqcloud.com/demo (key quickstart)