Post

스트리밍 미디어 서버

스트리밍 미디어 서버

스트리밍 미디어 서버 구축 및 관리

1. 미디어 서버 선택 및 구축

미디어 서버 소프트웨어를 선택하고 설치 및 구성합니다. 대표적인 미디어 서버 소프트웨어는 다음과 같습니다:

  • Nginx + RTMP 모듈 (오픈소스)
  • Wowza Streaming Engine (상용)
  • Red5 (오픈소스)

1.1 Nginx + RTMP 모듈 설치

1
2
3
sudo apt update
sudo apt install nginx
sudo apt install libnginx-mod-rtmp

1.2 Nginx 설정 파일 수정 (/etc/nginx/nginx.conf)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
rtmp {
    server {
        listen 1935;
        chunk_size 4096;

        application live {
            live on;
            record off;
            hls on;
            hls_path /tmp/hls;
            hls_fragment 5s;
            hls_playlist_length 60s;
        }
    }
}
  • chunk_size: 5초 단위로 스트리밍 세그먼트를 생성
  • hls_path: /tmp/hls에 청크 파일 저장

2. HLS 스트리밍 설정

HLS 프로토콜을 통해 음성/비디오 파일을 청크로 나누어 전송합니다.

2.1 FFmpeg를 사용한 HLS 청크화

1
ffmpeg -i input.mp3 -codec: copy -start_number 0 -hls_time 10 -hls_list_size 0 -f hls output.m3u8
  • input.mp3: 입력 파일
  • 10초 단위로 청크화
  • output.m3u8: 생성된 M3U8 매니페스트 파일

2.2 M3U8 매니페스트 파일 예시

1
2
3
4
5
6
7
8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:10
#EXTINF:10.0,
fileSequence0.ts
#EXTINF:10.0,
fileSequence1.ts

3. 스트리밍 파일 저장 및 호스팅

  • 스토리지 구성: 음성/비디오 파일과 청크 파일을 웹 서버나 클라우드 스토리지에 저장
  • CDN 사용: 트래픽이 많을 경우 CDN을 사용하여 스트리밍 성능을 향상

4. 클라이언트 측 스트리밍 구현

  • HTML5 Video 플레이어: HTML5 플레이어를 사용하여 클라이언트에서 스트리밍을 재생합니다.
  • hls.js 사용: 브라우저에서 HLS 스트리밍을 지원하지 않는 경우, hls.js 라이브러리를 사용합니다.
<video id="video" controls></video>
<script src="https://cdn.jsdelivr.net/npm/hls.js"></script>
<script>
  if (Hls.isSupported()) {
    var video = document.getElementById('video');
    var hls = new Hls();
    hls.loadSource('http://your-server/output.m3u8');
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED, function() {
      video.play();
    });
  }
</script>

5. 모니터링 및 트래픽 관리

  • 서버 모니터링: 서버 부하 및 스트리밍 성능을 모니터링 도구를 사용하여 관리합니다.
  • 트래픽 관리: 서버의 트래픽을 관리하거나, 필요시 Auto Scaling을 통해 동적으로 서버 확장.
This post is licensed under CC BY 4.0 by the author.