피드로 돌아가기
Dev.toBackend
원문 읽기
Async I/O와 FFmpeg Stream Copy 기반의 고성능 HLS 비디오 추출 엔진 설계
Giải mã kiến trúc Media Streaming của LinkedIn: Xây dựng Engine trích xuất video hiệu suất cao với HLS và FFmpeg
AI 요약
Context
LinkedIn의 미디어 전송 방식이 정적 MP4에서 Dynamic Adaptive Streaming(HLS) 구조로 진화함에 따른 추출 복잡도 증가. 다층 인증 체계와 수백 개의 분할 세그먼트로 구성된 m3u8 구조로 인해 단순 다운로드 방식으로는 고화질 원본 확보가 불가능한 한계 존재.
Technical Solution
- HLS Master Playlist의 재귀적 분석을 통한 최고 Bitrate 스트림 자동 식별 및 격리 구조 설계
- Bearer Token과 Guest Token의 유효 기간을 관리하는 self-healing session pool 구현을 통한 인증 우회 및 401/403 에러 방지
- Python Asyncio와 Httpx 기반의 Non-blocking I/O 스택 채택으로 수천 개의 동시 추출 요청 처리 가능 구조 확보
- FFmpeg의
-c copy플래그를 활용한 Stream Copying 방식으로 재인코딩 없는 실시간 Muxing 수행 - Vanilla JS 기반의 Utility-First 프론트엔드 설계로 FCP 1초 미만의 응답 속도 구현
실천 포인트
- 대량의 소규모 파일(HLS 세그먼트 등) 처리 시 Blocking I/O 대신 Async I/O 스택 검토 - 단순 포맷 변경이 목적일 경우 Transcoding 대신 Stream Copy를 사용하여 CPU 부하 및 화질 저하 방지 - 외부 API의 Rate-limit 대응을 위해 상태 복구가 가능한 Session Pool 설계 적용