C.W.K.
Stream
Lesson 07 of 08 · published

Parallel Encoding

~10 min · parallel, batch, throughput

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

두 parallelism flavor

  1. Encode 안 — FFmpeg 의 libx264/libx265 가 자동으로 multi thread 사용. -threads 0 (default) 가 encoder 픽 하게. Cap (-threads 4) 이 multiple encode 돌릴 때 외엔 거의 안 유용.
  2. Encode 사이 — 다른 파일 encode 하는 N FFmpeg process 동시. 진짜 throughput 승리가 라이브 한 곳.

Right N

10코어 M3 Pro 의 libx264 -preset slow 면 encode 마다 4–6 코어 pull. parallel -j 2 가 보통 winning. -j 4 가 oversubscribe; encode 가 거의 같은 총 시간에 끝나지만 각각 느낌 slow. Hardware encoder 면 -j 1 또는 -j 2 — media engine share.

Code

FFmpeg 와 GNU parallel·bash
# 한 번에 2 encode, libx264 software
ls *.mov | parallel -j 2 \
  'ffmpeg -y -i {} -c:v libx264 -crf 20 -preset slow -c:a copy {.}.mp4'

# 시작할 때 echo (log correlation 에 helpful)
ls *.mov | parallel -j 2 --joblog jobs.log \
  'echo "START {}"; ffmpeg -y -i {} -c:v libx264 -crf 20 -preset slow -c:a copy {.}.mp4; echo "DONE {}"'

# Hardware encoder — parallel 1 또는 2 만
ls *.mov | parallel -j 1 \
  'ffmpeg -y -i {} -c:v hevc_videotoolbox -b:v 6M -tag:v hvc1 -c:a copy {.}.mp4'
xargs 대안 (extra install 없음)·bash
# 같은 idea 와 xargs
find . -name '*.mov' -print0 | xargs -0 -P 2 -I {} sh -c '
  ffmpeg -y -i "$1" -c:v libx264 -crf 20 -preset slow -c:a copy "${1%.mov}.mp4"
' _ {}

External links

Exercise

Video 파일 4개 폴더 셋업. libx264 -preset slow 로 4개 sequential encoding 시간 측정. 그 다음 parallel -j 2 로 다시 시간 측정. 그 다음 -j 4. 총 시간 vs job count plot — 어느 N 에서 curve 가 flatten?

Progress

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

댓글 0

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

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