Skip to content

4. 송출하고 재생 확인하기 ​

앞의 세 단계에서 구성한 전송 경로에 테스트 신호를 보내고, StreamPackage 원본과 CSS CDN을 차례로 확인합니다.

사전 준비 ​

  • StreamLink Flow와 StreamLive 채널이 시작된 상태인지 확인합니다.
  • StreamLink 입력의 실제 송출 주소를 준비합니다.
  • StreamPackage Endpoint URL과 CSS 재생 URL을 준비합니다.
  • 송출 IP 허용 정책, 필요한 인증 정보, DNS와 HTTPS 인증서를 확인합니다.
  • FFmpeg / ffprobe / ffplay 또는 OBS와 HLS 재생 플레이어를 준비합니다.

아래 URL은 설명용입니다.

1. 테스트 신호 송출 ​

OBS에서는 StreamLink 입력 설정에 맞는 서버 주소와 스트림 키를 입력하고 송출을 시작합니다. FFmpeg를 사용하는 경우 아래와 같이 영상 패턴과 440Hz 테스트음을 보낼 수 있습니다. 테스트음 재생 전 볼륨을 낮춥니다.

bash
STREAM_PUSH_URL='rtmp://YOUR_STREAMLINK_HOST/YOUR_APP/YOUR_STREAM_KEY'
ffmpeg -re \
  -f lavfi -i "testsrc=size=1920x1080:rate=30" \
  -f lavfi -i "sine=frequency=440:sample_rate=48000" \
  -c:v libx264 -preset veryfast -b:v 4000k -maxrate 4000k -bufsize 8000k \
  -pix_fmt yuv420p -g 60 \
  -c:a aac -b:a 128k -ar 48000 \
  -f flv "$STREAM_PUSH_URL"

FFmpeg 로그의 송출 프레임 수와 시간, StreamLink 입력 주소 / 프로토콜 / 포트 / 허용 IP 및 목적지 수신 상태를 확인합니다.

2. 전송과 처리 상태 확인 ​

구간확인할 내용
인코더 → StreamLink입력 연결과 수신 상태
StreamLink → StreamLiveFlow 출력 목적지와 StreamLive 입력 수신 상태
StreamLive → StreamPackage출력 그룹, 목적지 채널 ID, 출력 상태
StreamPackage → CDN도메인 연결, 양방향 서비스 권한, 원본 접근 정책

RUNNING 상태와 입력 / 출력 지표, 최종 재생을 함께 확인합니다.

3. 원본 마스터 플레이리스트 확인 ​

bash
STREAM_ORIGIN_URL='https://YOUR_PACKAGE_HOST/YOUR_ENDPOINT_PATH/index.m3u8'
curl --fail-with-body --show-error --silent --max-time 20 "$STREAM_ORIGIN_URL"

엔드포인트 인증이 설정되어 있다면 해당 요청에 필요한 헤더나 인증 정보를 별도로 적용합니다.

다음은 두 해상도가 포함된 목록의 형식 예시입니다. 파일명과 수치는 실제 설정에 따라 달라집니다.

m3u8
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=2128000,RESOLUTION=1280x720,FRAME-RATE=30.000
720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=4128000,RESOLUTION=1920x1080,FRAME-RATE=30.000
1080p.m3u8

두 항목이 보이면 마스터 목록에 두 출력이 선언된 것입니다. 각 출력의 영상이 정상인지 확인하려면 미디어 목록과 실제 세그먼트까지 내려가야 합니다.

4. 미디어 목록과 세그먼트 확인 ​

마스터에 적힌 미디어 목록 URI를 실제 마스터 URL 기준으로 해석합니다. 파일명만 있으면 같은 디렉터리를, /로 시작하면 같은 호스트의 루트를 기준으로 합니다. 완전한 URL이면 그 주소를 그대로 사용합니다.

bash
STREAM_MEDIA_URL='https://YOUR_PACKAGE_HOST/YOUR_ENDPOINT_PATH/720p.m3u8'
curl --fail-with-body --show-error --silent --max-time 20 "$STREAM_MEDIA_URL"

다음 형식의 목록을 몇 초 간격으로 다시 확인합니다.

m3u8
#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:100
#EXTINF:4.000,
segment100.ts
#EXTINF:4.000,
segment101.ts
  • 라이브 송출 중 새 세그먼트가 추가되는지 확인합니다.
  • 슬라이딩 목록에서는 시간이 지나면 MEDIA-SEQUENCE도 증가하는지 확인합니다.
  • 목록에 적힌 세그먼트 URL이 실제로 접근 가능한지 확인합니다.
  • 720p와 1080p 각각에서 영상 / 오디오가 포함되어 있는지 확인합니다.
bash
ffprobe -v error -show_entries stream=codec_type,codec_name,width,height,r_frame_rate \
  -of json "$STREAM_MEDIA_URL"

ffprobe 결과는 미디어 형식 확인에 사용합니다. 검은 화면, 음소거, 끊김 여부는 실제 재생으로 별도 확인해야 합니다.

5. CDN을 통한 재생 확인 ​

StreamPackage에 연결된 CSS 재생 URL로 같은 검사를 반복합니다.

bash
STREAM_CDN_URL='https://YOUR_PLAYBACK_DOMAIN/YOUR_ENDPOINT_PATH/index.m3u8'
curl --fail-with-body --show-error --silent --max-time 20 \
  --dump-header - --output /dev/null "$STREAM_CDN_URL"
ffplay "$STREAM_CDN_URL"

플레이어에서 영상 패턴과 테스트음이 재생되는지, 일정 시간 동안 정지 없이 이어지는지 확인합니다. 자동 화질 선택으로 한 해상도만 재생될 수 있으므로 각 미디어 목록도 따로 검사합니다.

HTTPS 재생은 유효한 인증서 / 호스트 이름 / 인증서 체인으로 확인합니다.

장애 구간 구분 ​

증상우선 확인
StreamLink 입력 —인코더 송출 주소 / 키, 프로토콜, 방화벽과 허용 IP
StreamLive 입력 —Flow 출력 주소와 StreamLive 보안 그룹
원본 목록 404엔드포인트 경로, 원본 송출 여부, 출력 목적지
원본 또는 CDN에서 403요청 참조 대상의 권한, 헤더 / 쿼리 인증, IP 제한, 도메인 연결
마스터 정상 / 미디어 결과 확인미디어 URI 해석, 경로와 인증 정보
미디어 정상 / 세그먼트 결과 확인세그먼트 URI와 접근 정책, 캐시된 목록의 유효성
목록 갱신 중단원본 송출, 입력 / 출력 상태, 목록 캐시
원본 재생 / CDN 결과 확인CSS 원본 접근 권한, Host / 경로 / 인증 전달, DNS / TLS
영상만 재생되고 소리 —원본 오디오 트랙, 오디오 선택 및 출력 템플릿

해당 요청의 호스트 / 경로 / 응답 / 구간별 로그를 함께 확인합니다.

완료 기준 ​

  1. StreamLink와 StreamLive에서 원본 수신 및 출력 전달 확인
  2. StreamPackage 마스터에 필요한 해상도 목록 확인
  3. 각 미디어 목록의 갱신과 세그먼트 접근 확인
  4. 원본과 CSS CDN에서 실제 영상 / 오디오 재생 확인
  5. 재생 중 입력 / 출력 상태와 연속 재생 확인

테스트 종료 ​

FFmpeg는 실행 중인 터미널에서 Ctrl+C로 송출을 종료합니다. 이후 테스트용 StreamLink Flow와 StreamLive 채널을 중지합니다. 삭제는 선택 사항이며, 공유 리소스 여부와 의존성을 먼저 확인합니다.

실행 리소스와 저장 / 전송 사용량을 함께 확인합니다.

관련 문서 ​

基于 VitePress 构建 · 部署于腾讯云 EdgeOne Pages