본문 바로가기
CS 지식/네트워크

RTMP(Real-Time Messaging Protocol) 란?

by 검은도자기 2021. 9. 14.

정의

실시간 메시징 프로토콜(Real-Time Messaging Protocol)의 약자로 Macromedia(Adobe)에서 개발한 TCP 기반 프로토콜

 

 

RTMP 스트리밍 프로세스

1. 카메라 입력

카메라는 빛과 소리를 캡처하고 이러한 아날로그 입력을 원시(압축되지 않은) 디지털 형식으로 변환하는 작업을 수행

 

2. 인코딩

원시 오디오 및 비디오 데이터를 인식할 수 있는 품질 손실 없이 이상적으로는 더 작고 더 쉽게 처리할 수 있는 파일 크기로 압축

 

3. 배포 (업로드)

인코딩 된 미디어는 이제 미디어 서버에 배포되어야 하며 여기에서 RTMP가 필요합니다. RTMP는 캡처 및 인코딩 장치와 서버 간에 영구적인 연결을 설정하여 데이터를 빠르게 업로드할 수 있도록 합니다.

 

4. 미디어 서버(트랜스코딩 및 트랜스 먹싱)

원활한 플랫폼 간 경험을 가능하게 하기 위해 배후에서 중요한 트랜스코딩 작업을 수행합니다. 트랜스 먹싱(transmuxing)이라고 하는 프로세스에서 서버는 원본 미디어를 다양한 해상도, 품질 및 비트 전송률의 여러 버전으로 다시 패키 지겹고 HLS, m3 U8 및 VP8과 같은 여러 전달 프로토콜을 출력하여 다양한 재생 장치의 요구 사항을 충족합니다. 

예를 들어 YouTube 동영상을 시청하는 동안 480p에서 720p로 전환하면 실제로 YouTube 서버에 다른 해상도로 인코딩 된 다른 파일(동일한 동영상)을 재생하도록 요청하는 것입니다.

 

5. 콘텐츠 전송 네트워크(CDN)

그런 다음 인코딩 된 미디어의 올바른 버전을 미디어 서버에서 재생 장치로 보내야 합니다. 이를 위해 콘텐츠 전송 네트워크(CDN)가 항상 필요한 것은 아니지만 스트리밍 서버, 특히 소스에서 먼 거리를 이동해야 하는 미디어의 경우 대기 시간과 로드를 줄입니다. CDN은 스트리밍 데이터를 전 세계의 수많은 서버에 미러링 하여 지역적으로 최종 사용자 요구를 처리하는 방식으로 작동합니다.

 

6. 재생

수신 측에서 사용자의 재생 장치는 들어오는 데이터를 디코딩하고 조각을 적절한 하드웨어로 보냅니다. 오디오의 경우 디지털-아날로그 변환기는 오디오 파일의 숫자 순서 쌍을 다시 유사한 전기 신호로 변환한 다음 증폭된 후 장치의 스피커 콘을 구동합니다. 유사한 프로세스는 비디오 데이터를 화면에서 움직이는 이미지로 인식하는 컬러 픽셀 배열로 변환합니다.

 

 

지원되는 비디오 형식 

H.264(선호) 및 VP8이 가장 많이 사용되지만 Screen Video v2 및 AMF, SWF, FLV 및 F4V와 같은 다른 코덱도 지원

 

 

지원되는 오디오 형식

AAC(선호), mp3, AAC-LC 및 HE-AAC

 

 

RTMP의 대체 버전

  • RTMPS : TLS(전송 계층 보안)(이전의 보안 소켓 계층 또는 SSL)를 사용하여 연결합니다.
  • RTMPT : HTTP 요청 내에서 데이터를 캡슐화합니다.
  • RTMPE : Adobe의 독점 암호화를 사용합니다.
  • RTMFP : TCP 대신 일관된 연결을 설정할 필요가 없는 UDP(사용자 데이터그램 프로토콜)를 통해 전송합니다.

 

특징

  • TCP 위에서 작동하고 기본적으로 포트 번호 1935를 사용
  • Adobe의 자체 보안 메커니즘을 사용하여 암호화된 RTMP인 RTMPE. 구현의 세부 사항은 독점적이지만 메커니즘은 산업 표준 암호화 기본 형식을 사용

 

장점

  • 낮은 지연 시간
  • 비디오 플레이어와 서버 간의 지속적인 연결을 유지하여 안정적인 스트리밍 경험을 제공

 

단점

  • 2012년 이후 더 이상 기술적으로 업데이트되지 않음
  • VP9, AV1 등과 같은 최신 코덱을 지원하지 않음
  • HTML5에서 지원하지 않음
  • 특히 낮은 대역폭 문제 -> 이로 인해 스트리밍이 자주 중단되어 시청자의 경험을 망칠 수 있음
  • HTTP 연결을 통해 RTMP 피드를 직접 스트리밍 할 수 없음

 

마무리

스트리밍 프로토콜 중 하나인 RTMP에 대해서 공부한 내용을 정리해봤습니다.

공부해보니 RTMP 지원이 점점 줄어든다는 글을 봐서 타 서비스에서는 어떤 프로토콜을 쓰나 찾아보니 아직도 RTMP를 많이 사용하더라구여 사용하는지 검색해보니 몇몇 글에서 유지비가 싸서 많이 쓴다고 합니다.RTMP 지원이 모두 종료되면 과연 다른 기업들은 어떻게 행동을 할지 궁금하네요.

아직 부족하거나 틀린 부분이 있을 수도 있으니 주의하시면 좋을 거 같습니다.

이번 포스팅은 마무리하면서 다음 포스팅에서 뵙겠습니다.

 

 

참고

https://getstream.io/blog/real-time-messaging-protocol/

 

 

 

'CS 지식 > 네트워크' 카테고리의 다른 글

Server-Sent Events(SSE)란?  (0) 2022.03.11
IPFS란?  (0) 2021.10.27
WebRTC 란?  (0) 2021.10.01