C.W.K.
Stream
Lesson 06 of 10 · published

Two-Pass Encoding — 정확한 파일 사이즈 hit

~12 min · two-pass, bitrate, size-target

Level 0Viewer
0 XP0/73 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

정확한 파일 사이즈 필요할 때

Single-pass CRF 가 quality target 에 unpredictable 파일 사이즈. Single-pass bitrate 가 target bitrate 주지만 encoder가 timeline 에 bit 을 naively 할당 (지루한 stretch가 action sequence 와 같음). Two-pass 가 target 파일 사이즈 그리고 똑똑한 bit 할당 줘 — pass 1 이 전체 clip 분석, pass 2 가 그 map 으로 encode.

Two-pass 사용: hard size cap 있는 service에 업로드 (Discord 25 MB, 옛날 social media), DVD/Blu-ray authoring, '이 2시간 show를 4 GB 에 넣어' 결정한 archival.

수학

Target bitrate (kbps) = (target size MB × 8192) ÷ duration seconds − audio bitrate. 예: 5분 clip에 25 MB cap, 128 kbps audio: (25 × 8192) ÷ 300 − 128 ≈ 555 kbps video.

Code

Two-pass libx264·bash
# Pass 1 — analysis only, no audio, /dev/null 로 output
ffmpeg -y -i in.mp4 \
  -c:v libx264 -b:v 555k -pass 1 -preset slow \
  -an -f null /dev/null

# Pass 2 — pass 1 의 analysis 사용 실제 encode
ffmpeg -i in.mp4 \
  -c:v libx264 -b:v 555k -pass 2 -preset slow \
  -c:a aac -b:a 128k -movflags +faststart \
  out_25mb.mp4

# Pass 1 이 ffmpeg2pass-0.log 작성; pass 2 가 읽어.
# 끝나면 정리: rm ffmpeg2pass-*
Discord-friendly preset·bash
# Discord 에 ≤ 25 MB target (free tier). Duration/audio rate 조정.
DURATION=$(ffprobe -v error -show_entries format=duration \
  -of default=noprint_wrappers=1:nokey=1 in.mp4)
TARGET_KBPS=$(awk -v d="$DURATION" 'BEGIN { printf "%d", (25*8192/d)-128 }')
echo "Target video bitrate: ${TARGET_KBPS}k"

ffmpeg -y -i in.mp4 -c:v libx264 -b:v ${TARGET_KBPS}k -pass 1 \
  -preset slow -an -f null /dev/null
ffmpeg -i in.mp4 -c:v libx264 -b:v ${TARGET_KBPS}k -pass 2 \
  -preset slow -c:a aac -b:a 128k discord.mp4

External links

Exercise

5분 clip 잡아. Single-pass: libx264 -b:v 1M. 같은 bitrate에 two-pass. 파일 사이즈 메모 (target에 가까워?) 와 high-motion section 시각 검사 — two-pass 가 bit 더 균일하게 분배해? 그 다음 500 kbps 에서 다시 — low bitrate 에 two-pass가 더 dramatic 해?

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.