영상·오디오 코덱과 스트리밍
영상과 오디오가 만들어지고 전달되는 과정을 코덱, 컨테이너, 스트리밍 프로토콜 세 층으로 나누어 정리합니다. H.264·HEVC·AV1 비교, AAC·MP3·Opus 비교, MP4·MKV·WebM 구조처럼 선택 기준이 필요한 주제를 중심으로 합니다.
RTMP·RTSP·HLS·DASH·CMAF·WebRTC는 각각의 레퍼런스 글과 프로토콜별 지연·호환성을 비교한 글로 나뉘어 있습니다. FFmpeg와 GStreamer는 실제 명령과 파이프라인 예제를 중심으로 다룹니다.
처음 읽기 좋은 글
- RTMP·RTSP·HLS·DASH·CMAF·WebRTC 비교: 스트리밍 프로토콜별 지연과 용도RTMP·SRT·RTSP·HLS·DASH·CMAF·WebRTC의 동작 원리와 지연이 생기는 지점, LL-HLS의 실제 요구사항, 키프레임 정렬 같은 라이브 구축 함정과 용도별 선택 기준을 정리합니다.
- H.264 vs HEVC vs AV1 비디오 코덱 비교: 압축, 호환성, 인코딩 선택H.264, HEVC, AV1을 압축 효율, 인코딩·디코딩 부하, 기기 지원, 라이선스 기준으로 비교하고, 스트리밍·아카이브·실시간 전송 같은 용도별 코덱 선택과 FFmpeg 인코딩 예제, 기존 H.264 자산을 옮기는 마이그레이션 절차를 정리했습니다.
- FFmpeg 실전 가이드 | 동영상/오디오 처리FFmpeg 명령 구조와 코덱·비트레이트·프레임레이트 기초부터 H.264·H.265 인코딩, 해상도 변경, 오디오 추출, 썸네일과 GIF 생성, 자르기와 병합을 예제로 다룹니다. HLS·RTMP 스트리밍, 워터마크 필터, ffprobe, Python·Node.js·Go 라이브러리 연동도 포함합니다.
전체 글 23편
각 글에 표시된 난이도를 기준으로 초급, 중급, 고급 순으로 나눴습니다. 처음이라면 위쪽부터 읽고, 이미 아는 단계는 건너뛰어도 됩니다.
초급 (3편)
- MP3 오디오 코덱 실전 활용 | LAME·CBR·VBR·FFmpeg 인코딩 가이드LAME의 CBR·VBR·ABR 모드를 언제 써야 하는지 FFmpeg 인코딩·일괄 변환 명령과 함께 설명하고, VBR 재생 시간 오류, 클리핑, 샘플레이트 불일치처럼 MP3 작업에서 자주 부딪히는 문제의 해결법을 다룹니다.
- MP4 vs MKV vs WebM 컨테이너 비교: 호환성, 스트리밍, 자막웹 배포, 블루레이 아카이브, 온라인 강의처럼 목적이 다를 때 MP4·MKV·WebM 중 무엇을 쓸지 코덱 조합·자막·스트리밍·편집 툴 지원 기준으로 비교하고, 컨테이너 간 리먹스 FFmpeg 명령을 제공합니다.
- WebM 컨테이너 웹 표준 | VP9·AV1·Opus·HTML5·FFmpeg 입문WebM이 Matroska에서 허용 코덱을 VP8·VP9·AV1과 Vorbis·Opus로 좁힌 이유를 설명하고, HTML5 video 태그용 인코딩, 다중 품질 출력과 배치 처리, 스트리밍 최적화를 위한 FFmpeg 명령을 입문자 눈높이에서 다룹니다.
중급 (11편)
- 영상 인코딩 도구 고르기: ffmpeg preset과 faststart 실행 결과, GStreamer와의 역할 차이ffmpeg libx264에서 preset이 시간과 파일 크기를 얼마나 바꾸는지, faststart가 MP4 박스 순서를 어떻게 바꾸는지 합성 영상으로 실행해 확인하고, 파일 변환에는 ffmpeg, 파이프라인 조립에는 GStreamer라는 역할 차이를 실험 글과 연결해 설명합니다.
- AAC 오디오 코덱: LC-AAC·HE-AAC 압축 원리와 FFmpeg 인코딩 설정AAC-LC·HE-AAC·xHE-AAC 프로파일 차이, FFmpeg aac·libfdk_aac·aac_at 인코더 선택과 라이선스, VBR 값의 실제 의미, priming 무음과 갭리스, 브라우저 codecs 문자열까지 스트리밍 실무 기준으로 정리합니다.
- AAC vs MP3 vs Opus 오디오 코덱 비교 | 음질·비트레이트·호환성 가이드음악 스트리밍, WebRTC 화상회의, 팟캐스트처럼 용도가 다를 때 AAC·MP3·Opus 중 무엇을 골라야 하는지 음질·지연·호환성·라이선스 기준으로 비교하고, 바로 쓸 수 있는 FFmpeg 인코딩 명령을 함께 제공합니다.
- AV1 비디오 코덱 차세대 표준 | 로열티 프리·SVT-AV1·FFmpeg 실전AOMedia의 로열티 프리 코덱 AV1이 VP9·HEVC 대비 무엇이 다른지, 슈퍼블록·CDEF·필름 그레인 합성 같은 도구와 libaom·SVT-AV1·rav1e 인코더 선택, FFmpeg CRF·preset·2-pass 명령, 하드웨어 디코딩 지원과 폴백 설계를 정리합니다.
- GStreamer 실전 가이드 | 파이프라인·C/Python·gst-launch로 멀티미디어 다루기GStreamer 1.x로 재생·인코딩·스트리밍 파이프라인을 구성하는 방법을 정리합니다. Element·Pad·Caps 개념, gst-launch-1.0, C API, Python gi 예제, Bus 메시지·GST_DEBUG까지.
- H.264(AVC) 실무: 프로파일·레벨 계산, NAL 구조, FFmpeg 인코딩과 재생 안 되는 파일 고치기H.264(AVC)의 압축 원리, 프로파일·레벨(MBPS 계산), NAL·SPS·PPS와 Annex B·AVCC 차이, libx264 CRF·preset과 NVENC 설정, HLS용 키프레임 정렬, faststart, 브라우저에서 재생 안 되는 High 4:4:4·10비트 문제까지 실무 중심으로 정리합니다.
- HEVC(H.265) 비디오 코덱 실전 활용 | 4K·8K·x265·FFmpeg 튜닝HEVC(H.265)가 CTU 분할과 개선된 예측·변환으로 H.264보다 압축률을 높이는 원리를 설명하고, libx265 CRF·Main 10·NVENC 인코딩 명령과 파라미터 튜닝, 브라우저·기기 호환성, 특허 라이선스 문제까지 실무 판단에 필요한 내용을 다룹니다.
- MKV(Matroska) 컨테이너 실전 활용 | EBML·다중 자막·FFmpeg 리먹스Matroska의 EBML·Segment·Cluster 구조를 이해한 뒤, FFmpeg와 mkvtoolnix로 다중 오디오·자막 트랙과 챕터를 추가·제거하고 MKV를 MP4로 리먹스하는 방법, 브라우저 재생 실패 같은 문제의 해결법을 다룹니다.
- MP4 컨테이너 구조: ISO BMFF 박스, moov·mdat, fMP4와 FFmpeg 실전MP4의 ftyp·moov·mdat 박스 배치가 재생 시작 속도에 주는 영향을 설명하고, -movflags +faststart와 fragmented MP4 생성, HLS 세그먼트 출력, 웹·모바일 호환성을 맞추는 FFmpeg 명령을 사례별로 제공합니다.
- Opus 오디오 코덱 | SILK·CELT 구조, WebRTC 설정, FFmpeg 인코딩Opus가 음성용 SILK와 음악용 CELT를 어떻게 오가는지 설명하고, WebRTC·게임 보이스챗·팟캐스트에 맞는 FFmpeg 비트레이트와 프레임 길이 설정, 패킷 손실 대응, 구형 기기 미지원 문제의 해결법을 다룹니다.
- RTMP·RTSP·HLS·DASH·CMAF·WebRTC 비교: 스트리밍 프로토콜별 지연과 용도RTMP·SRT·RTSP·HLS·DASH·CMAF·WebRTC의 동작 원리와 지연이 생기는 지점, LL-HLS의 실제 요구사항, 키프레임 정렬 같은 라이브 구축 함정과 용도별 선택 기준을 정리합니다.
고급 (8편)
- CMAF(Common Media Application Format) 레퍼런스 — ISO 23000-19·fMP4·HLS+DASH·저지연CMAF가 ISO BMFF 기반 fMP4 세그먼트 하나로 HLS와 DASH를 동시에 서빙하는 구조를 트랙·헤더·프래그먼트 단위로 설명하고, LL-HLS·LL-DASH 저지연 구성, FFmpeg·Shaka Packager 패키징, CDN 캐싱과 프래그먼트 크기 튜닝을 다룹니다.
- H.264 vs HEVC vs AV1 비디오 코덱 비교: 압축, 호환성, 인코딩 선택H.264, HEVC, AV1을 압축 효율, 인코딩·디코딩 부하, 기기 지원, 라이선스 기준으로 비교하고, 스트리밍·아카이브·실시간 전송 같은 용도별 코덱 선택과 FFmpeg 인코딩 예제, 기존 H.264 자산을 옮기는 마이그레이션 절차를 정리했습니다.
- HLS(HTTP Live Streaming) 레퍼런스 — M3U8·ABR·암호화·LL-HLSRFC 8216 기반 HLS 스펙(M3U8, EXT-X, TS/fMP4, 바이트 레인지)과 FFmpeg·ABR·AES-128·FairPlay·CDN, LL-HLS·hls.js·Safari까지 실무에 바로 쓰는 기술 가이드입니다.
- MP4·WebM·MKV 컨테이너 내부 구조 심화 | 뮤싱·시크·fMP4·메타데이터MP4의 트랙·샘플·청크 모델과 Matroska의 EBML·Cluster 구조를 비교하며, 뮤서와 디먹서가 파일을 조립·분해하는 방식, stbl 테이블과 Cues로 시크하는 원리, 단편 MP4와 일반 MP4의 선택 기준을 설명합니다.
- MPEG-DASH 레퍼런스 — MPD(ISO 23009-1)·세그먼트·CENC/DRM·플레이어ISO/IEC 23009-1 MPD(Period, AdaptationSet, SegmentTemplate)와 FFmpeg·Shaka Packager, CENC, dash.js·Shaka·ExoPlayer·AVPlayer까지 MPEG-DASH 실무·플레이어 가이드.
- RTMP(Real-Time Messaging Protocol) 레퍼런스 — 핸드셰이크·청크·Nginx·FFmpeg·OBSRTMP의 앱 수준 핸드셰이크와 청크 스트림, AMF0 명령 메시지 구조를 짚고, Nginx-RTMP 설정, FFmpeg·OBS 송출, Node.js 서버 구성을 예제로 다룹니다. RTMPS·RTMPT의 차이와 연결 실패·지연·방화벽 문제를 점검하는 순서도 정리했습니다.
- RTSP(Real Time Streaming Protocol) 레퍼런스 — RFC 2326·7826·SDP·RTP·IP 카메라RFC 2326/7826 RTSP·SDP·RTP/RTCP, IP카메라·ONVIF·Digest, FFmpeg·GStreamer, NAT·방화벽, 버퍼·GOP·멀티스트림까지 실시간 수신·릴레이·녹화를 설계하는 가이드입니다.
- WebRTC 레퍼런스 — PeerConnection·ICE·STUN·TURN·시그널링·SFUW3C WebRTC API, SDP·ICE, STUN·Coturn, WebSocket 시그널링, Perfect Negotiation, Simulcast·SVC, 혼잡 제어·FEC, SFU(mediasoup·Janus·Jitsi) 운영까지 실무 기준으로 정리한 참조 문서입니다.
난이도 표시가 없는 글 (1편)
- FFmpeg 실전 가이드 | 동영상/오디오 처리FFmpeg 명령 구조와 코덱·비트레이트·프레임레이트 기초부터 H.264·H.265 인코딩, 해상도 변경, 오디오 추출, 썸네일과 GIF 생성, 자르기와 병합을 예제로 다룹니다. HLS·RTMP 스트리밍, 워터마크 필터, ffprobe, Python·Node.js·Go 라이브러리 연동도 포함합니다.