Technical Blog

기술 인사이트

실시간 통신, 미디어 처리, AI 통합에 대한 심층 분석.Agora SDK를 중심으로 프로덕션 레벨의 구현을 다룹니다.

56
포스트
7
카테고리

primary 카테고리 또는 태그로 Media에 속한 글을 모두 표시합니다.

블로그 검색 결과

Media
14분 읽기

HLS vs HTTP-FLV vs MP4 — 프로토콜과 컨테이너부터 바로잡는 스트리밍 선택 가이드

HLS, HTTP-FLV, MP4를 같은 종류의 포맷처럼 비교하면 선택 기준이 흐려집니다. HLS와 HTTP-FLV는 전달 방식이고, FLV와 MP4는 미디어를 담는 컨테이너입니다. 이 글은 HLS가 반드시 .ts만 쓰는지, HTTP-FLV가 Flash 종료와 함께 사라졌는지, 1~3초·10~30초라는 지연 수치를 어디까지 믿어야 하는지 검증하고, ABR·브라우저 호환성·CDN 확장성·실시간성에 따라 무엇을 선택할지 정리합니다.

HLSLL-HLSHTTP-FLVFLV+7
Media
12분 읽기

Stream과 RTP의 관계 — Cloud Recording 디버깅에서 헷갈리지 않는 법

stream은 논리적인 미디어 흐름이고 RTP는 그 미디어를 네트워크로 운반하는 패킷 프로토콜입니다. 하지만 WebRTC API의 MediaStream, Agora 운영 문맥의 stream, RTP의 SSRC packet stream은 같은 말이 아닙니다. 이 글은 track, stream, RTP, RTCP의 층위를 분리하고, muteLocalVideoStream, enableLocalVideo, stopPreview, leaveChannel이 Cloud Recording에서 어떻게 다르게 보이는지 검증된 기준으로 정리합니다.

WebRTCAgoraCloud RecordingRTP+6
Architecturevia Media
16분 읽기

WebRTC 아키텍처 — Mesh, SFU, MCU, Hybrid 비교

Mesh, SFU, MCU, Hybrid의 media path와 처리 경계를 토폴로지·시퀀스 다이어그램으로 비교합니다. Mesh의 direct path에는 TURN relay 예외가 있고, SFU는 선택 전달, MCU는 서버 합성을 담당합니다. 참가자 수만으로 결론을 내리지 않고 codec·subscription·layout·region·hardware·recording 요구를 함께 검증하는 기준을 제시합니다.

WebRTCMeshSFUMCU+3
Media
18분 읽기

HLS와 DASH 비교 — 매니페스트, 세그먼트, DRM, 저지연

HLS와 DASH를 매니페스트 문법, 세그먼트 형식, ABR, DRM, 저지연 확장 기준으로 비교합니다. 두 프로토콜이 fMP4를 사용할 때 CMAF 미디어 세그먼트를 공유할 수 있는 조건과 Apple 플랫폼의 HLS 요구사항도 함께 설명합니다. LL-HLS는 HTTP/2 Push가 아니라 blocking playlist reload와 preload hint를 사용한다는 점을 현재 사양에 맞춰 정리했습니다.

HLSDASHCMAFfMP4+8
Media
22분 읽기

라이브 스트리밍 송출 파이프라인 — Ingest, Transcoding, HLS, CDN

OBS의 RTMP·RTMPS 출력이 ingest, transcoding, ABR packaging, CDN, player buffer를 거쳐 재생되는 경로를 분해합니다. 전체 지연은 세그먼트 길이 하나가 아니라 인코더, 패키저, 배포망, 플레이어 설정의 합으로 결정됩니다. AWS MediaLive와 MediaConvert의 역할 차이와 상호작용 요구에 따라 HLS 계열과 WebRTC를 선택하는 기준도 다룹니다.

라이브 스트리밍RTMPHLSABR+7
Media
20분 읽기

SFU 확장 구조 — 단일 노드 용량과 Cascading

Full Mesh, 단일 SFU, 지역 간 SFU cascading, CDN 기반 방송 구조의 부하 특성을 비교합니다. SFU 용량은 참가자 수만으로 정해지지 않고 publish·subscribe 수, simulcast layer, bitrate, packet rate, 암호화, 하드웨어에 따라 달라집니다. 따라서 예시 계산은 용량 계획의 출발점으로만 사용하고 실제 트래픽 모델로 부하 시험해야 합니다.

SFUMCUMeshP2P+6
Media
18분 읽기

모바일 영상 파이프라인의 발열 — 메모리 복사, GPU Texture, Zero-Copy, 하드웨어 코덱

카메라 캡처부터 색공간 변환, 인코딩, 디코딩, 렌더링까지 모바일 영상 경로에서 메모리 복사와 CPU·GPU·하드웨어 코덱 사용이 발열에 미치는 영향을 설명합니다. Android SurfaceTexture와 iOS CVPixelBuffer 같은 플랫폼별 버퍼 공유 방식도 비교합니다. 실제 전력 효과는 단말과 코덱 지원에 따라 달라지므로 계측 기준을 함께 제시합니다.

Zero-CopyGPUTextureSurfaceTexture+6
Telephonyvia Media
25분 읽기

iOS VoIP 통합의 4-레이어 모델 — CallKit · PushKit · AVAudioSession · Agora ADM

PushKit 수신, CallKit transaction, AVAudioSession activation, RTC SDK audio module의 책임을 네 계층으로 나눕니다. `didActivate`와 `didDeactivate`, interruption·route change callback을 어떤 상태 전이에 연결할지 설명하며, channel join 시점과 audio module 제어는 사용 중인 SDK 계약에 맞춰 검증합니다.

iOSCallKitPushKitAVAudioSession+5
Media
12분 읽기

Bitrate와 화질 — 같은 해상도인데 왜 결과가 다른가

Bitrate는 해상도·frame rate·codec·장면 복잡도와 함께 압축 화질을 좌우합니다. 이 글은 송출 설정, 네트워크 적응, Cloud Recording 출력 설정을 구분하고 `ffprobe`로 실제 결과를 측정하는 절차를 설명합니다. 출력 bitrate를 높여도 원본에서 이미 잃은 디테일은 복원되지 않으므로 실제 콘텐츠로 품질을 비교해야 합니다.

BitrateCloud RecordingHLSffprobe+1
Backendvia Media시리즈
15분 읽기

FFmpeg 실전 파이프라인 — Agora 녹화에서 프로덕션 VOD까지

Individual recording 결과를 참가자별 VOD나 하나의 composite 화면으로 후처리하는 FFmpeg 파이프라인을 설명합니다. M3U8과 TS를 점검하고 기록된 track의 시작 시각을 맞춘 뒤, audio-only·video-only 입력과 참가자 수를 검증해 레이아웃을 구성합니다. 입력값 제한, 경로 검증, 실패 복구를 포함한 자동화 기준도 함께 다룹니다.

FFmpegCloud Recordingfilter_complexCRF+1
Backendvia Media시리즈
14분 읽기

FFmpeg 미디어 처리 — 컨테이너, 코덱, 스트림

FFmpeg에서 컨테이너, 코덱, 스트림을 구분하고 probe·demux·decode·filter·encode·mux 단계가 어떻게 연결되는지 설명합니다. `-c copy`는 입력 코덱과 출력 컨테이너, timestamp와 keyframe 조건이 맞을 때만 안전합니다. remux, transcoding, stream mapping, seek, concat을 선택하는 기준을 실제 명령으로 정리했습니다.

FFmpegCodecContainerMuxing+1
Media시리즈
12분 읽기

Agora 녹화 모드 비교 — Individual, Composite, Web page

Individual, Composite(`mix`), Web page recording의 출력과 처리 범위를 비교합니다. Individual은 참가자별 track 후처리에, Composite는 서버 합성과 고정 레이아웃 출력에, Web page recording은 웹 화면 캡처에 맞습니다. 과금은 모드 이름이 아니라 스트림 수·시간·합산 해상도 등 공식 가격 기준으로 확인해야 합니다.

Cloud RecordingIndividualCompositeWeb page recording
Backendvia Media시리즈
8분 읽기

내 서버에서 직접 녹화한다면 — On-Premise vs Cloud Recording

데이터 위치·처리자·보유 방식에 대한 계약이나 규제 요구가 Cloud Recording의 데이터 흐름과 맞지 않을 때 On-Premise Recording을 검토할 수 있습니다. 이 글은 배포 위치, 운영 책임, 후처리 통제 범위를 Cloud 방식과 비교하고 raw-data callback은 사용하는 SDK 버전의 API 계약으로 확인해야 한다는 기준을 제시합니다.

On-Premise RecordingCloud RecordingYUVRaw Data+1
Backendvia Media시리즈
10분 읽기

실시간 통화, 왜 녹화해야 하는가 — Cloud Recording Architecture

WebRTC는 미디어 저장 방식을 정의하지 않으므로 녹화가 필요하면 별도 파이프라인을 설계해야 합니다. 이 글은 브라우저 `MediaRecorder`, 자체 미디어 서버, Agora Cloud Recording의 통제 범위와 운영 부담을 비교합니다. Cloud Recording의 non-streaming client 모델, `acquire → start → query → stop` 수명주기, REST 인증과 RTC token의 역할도 구분합니다.

Cloud RecordingNon-streaming ClientSD-RTNREST API
Media
10분 읽기

Agora의 기업 방화벽 우회 전략 — Cloud Proxy와 Firewall Whitelist

제한된 enterprise network에서 Agora RTC에 필요한 domain·port allowlist와 Cloud Proxy를 비교합니다. UDP 차단, 고정 outbound 정책, TLS inspection 같은 조건에 따라 적용 범위가 달라지며 어느 방식도 모든 방화벽 통과를 보장하지 않습니다. 운영망에서 join·publish·subscribe를 검증하는 절차를 함께 제시합니다.

FirewallCloud ProxyUDP/TCP

© 2026 Frank Kim. All rights reserved.