RTMP (Real Time Messaging Protocol)은 한줄요약 하자면 어드비에서 만든 실시간 TCP 기반의 메세지 규약, 주로 오디오와 비디오 데이터 전송을 위한 프로토콜이다.
2002년 Macromedia가 개발한 RTMP는 Flash기반의 오디오, 비디오 스트리밍을 지원하기 위해 나왔다고 한다. 2009년에 드디어 Adobe는 RTMP의 스팩을 공개하여 다른 곳에서도 사용 가능하게 되었다고 한다.
🤔 왜 Message 일까?
단순한 데이터 전송이 아닌 데이터 교환이나 메세지 전송을 주요 기능으로 하기 때문이다. RTMP는 오디오, 비디오, 텍스트 뿐만이 아니라 메타데이터와 제어 메세지도 전송하기 때문이다. 다양한 메세지를 수용할 수 있기 때문에 게임 스트리밍, 실시간 방송, 화상회의, 다중 채팅 등 여러 상황에서 유용하게 사용이 가능하다.
- 오디오 메시지: 오디오 데이터를 포함하는 메시지
- 비디오 메시지: 비디오 데이터를 포함하는 메시지
- 커맨드 메시지: 스트림의 시작, 중지, 재생 등의 명령
- 공유 객체 메시지: 클라이언트 간에 실시간으로 데이터를 동기화할 때 사용되는 메시지
- 데이터 메시지: 메타데이터(예: 비디오 해상도나 코덱 정보)를 포함하여 스트리밍에 필요한 추가 정보
- 사용자 제어 메시지: 스트림 제어 및 사용자 상호작용, 버퍼 상태나 이벤트 알림 같은 제어 정보
📹 지원하는 코덱
지원하는 Video, Audio 코덱은 아래와 같다.
- Video Codecs: H.265 (preview), H.264, VP9, VP8
- Audio Codecs: AAC, AAC-LC, HE-AAC+ v1 & v2, MP3, Speex, Opus, Vorbis
⭐️ 아직도 많이 쓰이는 송출 프로토콜
아직까지도 Youtube, Facebook, SOOP, Twitch 등 여러 곳에서 많이 쓰이고 있다. 당장 내가 개발해야하는 Naver Cloud Live Station에서도 RTMP 에 맞춰 보내달라고 요구하고 있다.
현재에는 WebRTC나 SRT같은 초저지연 프로토콜들이 등장하였지만 RTMP는 20년 넘게 다양한 환경에서 아직도 사용되고 있다. RTMP가 안정적이고 간편하며, 다양한 스트리밍 장비와 소프트웨어에서 쉽게 사용할 수 있기 때문이라고 한다.
송출 프로토콜이라고 한 이유는 아래와 같이 수신하는 쪽에서는 HLS를 가장 많이 쓴다고 한다.
🏄♂️ 스트리밍 흐름
스트리밍 흐름을 간단하게 설명하면 위와 같다. 위의 내용을 고려하여 송출은 RTMP, 수신은 HLS 형식이라고 보면 위의 그림과 같다.
- 비디오를 RTMP에 맞춰서 인코딩 한다.
- RTMP형식의 메세지를 Media Server에서 메세지를 최적화 한다.
- HLS 방식으로 각 디바이스에 송출을 한다.
- 각 디바이스에서 HLS 스트림을 받고, 재생한다.
'→ Computer Science' 카테고리의 다른 글
[CS] 프로세스와 스레드 딥다이브 - 2. 프로세스의 구조?? (1) | 2025.01.18 |
---|---|
[CS] 프로세스와 스레드 딥다이브 - 1. 딥다이브 전 기초지식 (0) | 2025.01.18 |
[CS] TCP/UDP 전송계층 (0) | 2024.11.07 |
[CS] 소켓을 Swift로 알아보기 (0) | 2024.11.07 |
[CS] 정지문제 (Halting problem) (0) | 2024.04.08 |