개요
영상 미러링 테스트 중 Delay Variation(Jitter) 문제가 발생하여 이를 측정하고 개선하기 위한 테스트 방법을 구현한 사례입니다.
기존에는 시계 영상을 사용해 비교했지만, 화면 변화가 큰 일반 영상에서는 분석이 어려웠습니다.
이를 해결하기 위해 각 프레임에 프레임 번호(Frame Number) 또는 타임스탬프를 삽입한 테스트 영상을 생성했습니다.
문제 상황
- 문제
- 미러링 기능에서 Delay 변동폭(Variation, Jitter) 발생
- 기존 방법: 시계 영상 기반 비교
- 한계: 일반 영상에서는 화면 변화가 많아 정확한 분석 어려움
- 개선 방향
- 영상 자체에 프레임 번호 또는 타임스탬프 삽입
- 비교 시 육안 확인이 가능하고, 자동 분석에도 활용 가능
- FFmpeg을 사용하면 간단하고 빠르게 처리 가능
해결 방안
- FFmpeg의
drawtext필터를 이용하여 영상에 Frame Number 또는 Timestamp 삽입 - 입력 영상의 코덱을 분석하여 적절한 인코딩 코덱 자동 선택
- 원본 오디오 스트림은 그대로 복사하여 변환 속도 단축
FFmpeg 빌드 종류 비교
| 구분 | 일반 FFmpeg 빌드 | Axiom 빌드 |
| 출처 | 공식 FFmpeg 프로젝트 | Axiom(서드파티) 최적화 버전 |
| 목적 | 범용 코덱 지원, 안정성 | 최신 코덱·하드웨어 가속·최적화 |
| 코덱 지원 | H.264, HEVC, VP9, AV1 등 표준 지원 | 동일 + 추가 최적화된 AV1, GPU 가속 라이브러리 통합 |
| 속도 | CPU 기반 변환이 일반적 | GPU/하드웨어 가속 적극 활용, 더 빠른 처리 가능 |
| 설치 용이성 | 대부분 OS에서 패키지 설치 가능 | 직접 빌드 또는 배포 파일 다운로드 필요 |
| 활용 사례 | 범용 영상 변환, 서버 작업 | 실시간 방송, 고해상도 대량 변환, AI/ML 영상 처리 |
Tip:
- 일반 빌드는 안정성이 높아 서버 배포용으로 적합
- Axiom 빌드는 최신 하드웨어와 함께 사용 시 속도 이점 큼
- AV1, HEVC 등 고효율 코덱 테스트 시 Axiom이 유리
스크립트 주요 기능
1. 인자 처리
--input: 입력 영상 경로 (기본값:input.mp4)--output: 출력 영상 경로 (기본값:output_with_frame.mp4)--fontsize: 글자 크기 (기본값: 120)--mode: 표시 방식 (frame→ 프레임 번호,timestamp→ 시간 정보)
2. 비디오 코덱 확인
def get_video_codec(input_path):
ffprobe로 입력 영상의 codec_name 추출
3. 코덱 매핑
def map_codec_to_encoder(codec_name):
h264 → libx264, hevc/h265 → libx265, vp9 → libvpx-vp9, av1 → libaom-av1
4. 재인코딩 & drawtext 적용
ffmpeg -i input.mp4 \
-vf "drawtext=text='Frame\: %{n}':x=10:y=10:fontsize=120:fontcolor=white:box=1:boxcolor=black@0.5" \
-c:v libx264 -preset fast -crf 23 -c:a copy output.mp4
사용 예시
python add_timestamp_3.py \
--input test.mp4 \
--output test_with_frame.mp4 \
--fontsize 120 \
--mode frame
타임스탬프 모드:
python add_timestamp_3.py \
--input test.mp4 \
--output test_with_time.mp4 \
--fontsize 100 \
--mode timestamp
기대 효과
- Delay/Jitter 측정을 위한 정량적 비교 가능
- 일반 영상에서도 프레임 단위 분석 용이
- FFmpeg 활용으로 다양한 코덱 지원 & 빠른 처리
- Axiom 빌드 사용 시 하드웨어 가속을 통한 성능 향상
'Multimedia Networking' 카테고리의 다른 글
| YouTube처럼 썸네일 미리보기 구현하기: HLS + Android 앱 완벽 가이드 (1) | 2025.07.02 |
|---|---|
| HTTP를 넘어서 HTTP 2, HTTP 3 (0) | 2025.05.14 |
| High Performance Browser Networking: Ch 09 HTTP의간략한역사 (0) | 2025.05.07 |
| 5G와 모바일 네트워크의 진화 (0) | 2025.04.30 |
| High Performance Browser Networking: Ch 08 모바일네트워크최적화 (0) | 2025.04.23 |








