비디오 인코딩은 디지털 비디오 신호를 최소한의 품질 손실로 저장 및 네트워크 전송에 적합한 형식으로 압축하는 과정입니다. 인코딩이 없으면 압축되지 않은 4K 비디오 1분은 약 30GB를 차지하므로 인터넷을 통한 전송이 불가능합니다. Sandvine Global Internet Phenomena(2025) 보고서에 따르면, 비디오는 전체 인터넷 트래픽의 65%를 차지하며, 인코딩은 이를 가능하게 하는 핵심 기술입니다.
핵심 요점
비디오 인코딩은 압축 알고리즘을 사용하여 압축되지 않은 비디오 신호를 디지털 형식으로 변환하는 과정입니다. 비디오 코덱에 구현된 이러한 알고리즘은 공간 영역(단일 프레임 내)과 시간 영역(연속 프레임 간) 모두에서 중복 정보를 제거합니다.
압축되지 않은 비디오는 프레임의 연속이며, 각 프레임은 RGB 또는 YUV 형식의 픽셀 배열로 저장됩니다. 압축 없이 30FPS의 1080p 비디오 1초에는 약 1.5GB의 메모리가 필요합니다. H.264 코덱은 이 스트림을 3–5Mbps로 압축하여 원본 크기의 2500분의 1로 줄입니다.
비디오 코덱은 프레임 내 압축(인트라 프레임)과 프레임 간 압축(인터 프레임)의 두 가지 유형을 사용합니다. 프레임 내 압축은 각 프레임에 독립적으로 적용되며 JPEG와 유사한 알고리즘(이산 코사인 변환(DCT), 양자화, 엔트로피 코딩)을 사용합니다.
프레임 간 압축은 연속 프레임 간의 차이를 분석하고 변경 사항만 인코딩합니다. 배경이 정적인 경우 코덱은 전체 프레임을 한 번만 전송하고(I-프레임), 그 후에는 차이만(P-프레임 및 B-프레임) 전송하여 움직임이 적은 장면의 데이터 양을 크게 줄입니다.
비디오 코덱 선택은 품질 대 크기 비율, 장치 호환성 및 라이선스 비용을 결정합니다. 네 가지 주요 코덱이 모바일 애플리케이션 시장을 지배합니다: H.264(AVC), H.265(HEVC), VP9 및 AV1.
| 코덱 | 표준 | 연도 | H.264 대비 압축률 | 라이선스 |
|---|---|---|---|---|
| H.264/AVC | MPEG-4 Part 10 | 2003 | 1배(기준) | 로열티(MPEG LA) |
| H.265/HEVC | MPEG-H Part 2 | 2013 | 40–50% 더 효율적 | 로열티(2개 풀) |
| VP9 | 2013 | 30–40% 더 효율적 | 무료 | |
| AV1 | AOM | 2018 | 50–60% 더 효율적 | 로열티 프리 |
H.264(AVC — Advanced Video Coding)는 가장 호환성이 높은 비디오 코덱으로 남아 있습니다: 2005년 이후 모든 모바일 장치, 브라우저 및 스마트 TV에서 지원됩니다. 하드웨어 가속 H.264 디코딩은 저가형 장치에서도 사용 가능하므로 범용 스트림에 이상적입니다.
H.264의 주요 단점은 최신 코덱에 비해 상대적으로 낮은 압축 효율입니다. 동일한 비트레이트에서 H.265와 AV1은 특히 HDR 및 4K 콘텐츠에서 눈에 띄게 높은 품질을 제공합니다.
H.265(HEVC — High Efficiency Video Coding)는 동일한 시각적 품질에서 H.264보다 40–50% 더 나은 압축을 제공합니다. 이는 프레임을 블록으로 더 유연하게 분할(16×16 대신 최대 64×64 픽셀의 CTU)하고 향상된 움직임 예측 알고리즘을 통해 달성됩니다.
HEVC는 모든 Apple 장치(iPhone 6부터), Android(하드웨어 디코딩을 지원하는 버전 5.0부터) 및 대부분의 스마트 TV에서 지원됩니다. HEVC 라이선스 비용은 H.264보다 높으며 두 개의 특허 풀에서 관리되므로 법적 사용이 복잡합니다.
AV1은 Google, Netflix, Amazon, Intel 및 Mozilla가 주도하는 컨소시엄인 Alliance for Open Media(AOM)에서 개발한 비디오 코덱입니다. AV1은 H.264보다 50–60% 더 나은 압축을 제공하며 완전히 로열티 프리이므로 스트리밍 서비스에 매력적입니다.
AV1의 주요 단점은 인코딩의 높은 계산 복잡성입니다. 동일한 하드웨어에서 AV1 인코딩은 H.264보다 5–10배 느릴 수 있지만, 2024–2025년 장치(Snapdragon 8 Gen 3, Apple A17 Pro)에서는 하드웨어 디코딩이 이미 나타나고 있습니다.
모바일 애플리케이션에서 오디오 코덱은 비디오 코덱만큼 중요합니다. 스트리밍 비디오에는 최소 지연 시간, 높은 품질, MP4 및 WebM 컨테이너와의 호환성을 갖춘 오디오가 필요합니다. 세 가지 주요 오디오 코덱이 모바일 스트리밍 애플리케이션의 99%를 커버합니다.
AAC(Advanced Audio Coding)는 MP3의 후속 제품으로, 1997년 MPEG에서 개발되어 iTunes, YouTube 및 Android의 표준 오디오 코덱이 되었습니다. AAC는 MP3보다 30% 낮은 비트레이트에서 동일한 품질을 제공하며 최대 7.1채널의 다중 채널 오디오를 지원합니다.
모바일 애플리케이션의 경우 스테레오의 경우 128–192kbps의 AAC-LC와 낮은 비트레이트(32–64kbps)의 경우 AAC-HE가 권장됩니다. 하드웨어 AAC 디코딩은 모든 최신 장치에서 사용 가능하여 전력 소비를 최소화합니다.
Opus는 IETF(RFC 6716)의 오픈 오디오 코덱으로, 6~510kbps의 비트레이트에서 모든 오디오 코덱 중 최고의 품질을 제공합니다. Opus는 SILK(음성용 알고리즘)와 CELT(음악용)를 결합하고 콘텐츠에 따라 자동으로 모드를 전환합니다.
Opus는 WebRTC의 화상 통화, Spotify 및 Discord 애플리케이션에 사용되며 iOS 11 및 Android 5.0부터 HLS에서 지원됩니다. Opus의 낮은 지연 시간(AAC의 40–100ms 대비 5–26ms)은 라이브 방송 및 화상 회의에 선호되는 선택입니다.
인코딩 매개변수는 최종 파일 크기, 비디오 품질 및 장치 호환성을 결정합니다. 모바일 애플리케이션 개발자는 영화, 스포츠 중계, 사용자 생성 콘텐츠 등 콘텐츠 유형별로 최적의 설정을 선택해야 합니다.
비트레이트는 비디오 1초를 인코딩하는 데 사용되는 비트 수입니다. 라이브 방송용 CBR(고정 비트레이트), 아카이브 저장용 목표 품질의 VBR(가변 비트레이트), 스트리밍용 ABR(평균 비트레이트)이 있습니다.
| 해상도 | H.264(권장) | H.265/HEVC | AV1 |
|---|---|---|---|
| 360p | 400–800kbps | 250–500kbps | 200–400kbps |
| 720p | 1.5–4Mbps | 1–2.5Mbps | 0.8–2Mbps |
| 1080p | 3–8Mbps | 2–5Mbps | 1.5–4Mbps |
| 4K(2160p) | 15–40Mbps | 10–25Mbps | 8–20Mbps |
CRF(Constant Rate Factor)는 x264 및 x265의 인코딩 매개변수로, 고정 비트레이트 대신 목표 품질을 설정합니다. CRF 척도는 0(무손실)부터 51(최저 품질)까지이며 18~28이 작업 범위입니다. 모바일 애플리케이션의 경우 x264의 CRF 23 및 x265의 CRF 25가 권장됩니다.
CRF 18~20은 프레젠테이션 콘텐츠 및 오프라인 시청을 위한 고품질을 제공합니다. CRF 24~28은 파일 크기가 절대적인 품질보다 더 중요한 스트리밍 및 사용자 생성 콘텐츠에 적합합니다.
H.264 표준은 최대 비디오 매개변수를 제한하는 프로필(Baseline, Main, High)과 레벨(Level 1~5.2)을 정의합니다. Baseline Profile은 모든 장치와 호환되지만 B-프레임을 지원하지 않습니다. High Profile은 최대 품질을 제공하며 1080p 콘텐츠에 사용됩니다.
4K 스트리밍에는 Level 5.1 이상이 필요하며, 2018년 이후 대부분의 모바일 장치에서 지원됩니다. 코덱 레벨은 최대 해상도, 비트레이트 및 버퍼 크기를 결정하여 인증된 모든 장치에서 올바른 디코딩을 보장합니다.
스트리밍을 위한 인코딩은 여러 품질 변형(ABR 래더)을 생성하고 네트워크 전송에 최적화해야 한다는 점에서 아카이브 인코딩과 다릅니다. 콘텐츠 제공자는 VOD를 위해 실시간 트랜스코딩 또는 사전 인코딩을 사용합니다.
모바일 애플리케이션의 일반적인 ABR 래더에는 4~6개의 변형이 포함됩니다: 약한 네트워크용 144p(200kbps)부터 Wi-Fi용 1080p(8Mbps)까지입니다. 권장 해상도: 144p, 240p, 360p, 480p, 720p, 1080p. 4K 콘텐츠의 경우 1440p와 2160p가 추가됩니다.
val mediaCodec = MediaCodec.createEncoderByType(
MediaFormat.MIMETYPE_VIDEO_AVC
)
val format = MediaFormat.createVideoFormat(
MediaFormat.MIMETYPE_VIDEO_AVC,
1280, 720
).apply {
setInteger(MediaFormat.KEY_BIT_RATE, 3_000_000)
setInteger(MediaFormat.KEY_FRAME_RATE, 30)
setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 2)
setInteger(MediaFormat.KEY_PROFILE,
MediaCodecInfo.CodecProfileLevel.AVCProfileHigh)
setInteger(MediaFormat.KEY_LEVEL,
MediaCodecInfo.CodecProfileLevel.AVCLevel31)
}
mediaCodec.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
라이브 방송의 경우 낮은 지연 시간이 특히 중요합니다. 인코딩 설정은 코덱의 입출력 지연을 최소화해야 합니다: GOP 크기 1~2초(30~60프레임마다)가 권장되며, B-프레임은 비활성화하거나 최소화하고, H.264에는 Baseline Profile을 사용합니다.
최신 저지연 프로토콜 — LL-HLS 및 CMAF-Low Latency — 은 1~2초 세그먼트와 부분 다운로드(Partial Segments)를 지원하는 조각화된 인코딩이 필요합니다. 코덱은 조각화된 MP4를 위해 각 세그먼트에서 moof-box를 지원해야 합니다.
자주 묻는 질문
비디오 인코딩은 코덱을 사용하여 디지털 비디오 신호를 압축하여 데이터 양을 줄이는 과정입니다. 모바일 애플리케이션에서 인코딩을 사용하면 장치 화면에서 눈에 띄는 품질 저하 없이 비디오 크기를 수백 분의 1로 줄여 전송 및 저장할 수 있습니다.
H.264는 구형 장치와의 최대 호환성을 제공하는 반면, H.265는 동일한 품질에서 40–50% 더 효율적입니다. 1080p 이하 콘텐츠에는 H.264로 충분하며, 4K의 경우 장치가 지원한다면 H.265 또는 AV1이 권장됩니다.
비트레이트는 비디오 초당 데이터 양입니다. 1080p의 경우 H.264에서는 3–8Mbps, H.265에서는 2–5Mbps가 최적의 비트레이트입니다. 선택은 콘텐츠에 따라 달라집니다: 역동적인 장면(스포츠)은 더 높은 비트레이트가 필요하고 정적인 장면(인터뷰)은 더 낮은 비트레이트가 필요합니다.
VP9은 Google의 AV1 전신으로 H.265 수준의 압축을 제공합니다. AV1은 VP9보다 20–30% 더 효율적으로 압축하지만 5–10배 더 많은 인코딩 리소스가 필요합니다. VP9은 YouTube에, AV1은 Netflix 및 최신 스트리밍 서비스에 더 적합합니다.
라이브 방송의 경우 GOP 1~2초, B-프레임 없음, 1080p에서 2~4Mbps 비트레이트로 H.264 Baseline Profile을 사용하세요. LL-HLS를 위해 조각화된 MP4(CMAF)를 활성화하고 MediaCodec 또는 VideoToolbox를 통한 하드웨어 인코딩을 사용하세요.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.