홈 › 실험 환경과 재현 방법

실험 환경과 재현 방법

이 가이드의 예제와 측정값을 만든 장비, 도구 버전, 합성 테스트 미디어를 만드는 명령, 재현할 때 달라질 수 있는 점을 밝힙니다.

최종 수정 2026-10-28

이 가이드의 명령과 코드는 아래 환경에서 직접 실행해 결과를 확인했습니다. 독자가 같은 결과를 얻을 수 있도록 환경과 테스트 미디어를 만드는 방법을 적습니다.

#장비와 도구 버전

항목 버전·사양
운영체제 Windows 11 Pro
GPU NVIDIA GeForce RTX 5070 Ti (16GB)
FFmpeg / FFprobe N-123034-g47e87ed722-20260226 (개발 빌드)
MediaInfo 23.07 (DLL을 파이썬 ctypes로 호출)
Python 3.13.12 (NumPy 2.4.5, Pillow 12.2.0, SQLite 3.51.1)
로컬 LLM·비전 모델(8~9장) Ollama 0.40.11, qwen3.8:27b(Q4_K_M 양자화, 파일 약 17.7GB, digest 앞 12자리 aaee06c39dcf)
사이트 생성 Node.js v24.16.0, markdown-it 14.1.0, highlight.js 11.10.0

FFmpeg는 개발 빌드이므로 릴리스 버전과 필터 동작이 다를 수 있습니다. 특히 오래된 버전에서는 -fps_mode 대신 -vsync를 써야 할 수 있습니다.

#합성 테스트 미디어

방송 소재나 타인의 영상을 쓰지 않고, 모든 테스트 파일을 FFmpeg의 가상 입력(lavfi)과 파이썬으로 직접 만들었습니다. 대표적인 명령은 다음과 같습니다.

# H.264/AAC MOV (6초)
ffmpeg -f lavfi -i testsrc2=size=640x360:rate=25 -f lavfi -i sine=f=660:r=48000 -t 6 -c:v libx264 -c:a aac a.mov

# MPEG-2/PCM MXF (6초). MXF는 오디오가 48kHz여야 함
ffmpeg -f lavfi -i testsrc2=size=640x360:rate=30000/1001 -f lavfi -i sine=f=440:r=48000 -t 6 \
  -c:v mpeg2video -b:v 8M -c:a pcm_s16le -f mxf a.mxf

# 10분 길이 영상(추출 속도 측정용)
ffmpeg -f lavfi -i testsrc2=size=640x360:rate=25 -f lavfi -i sine=f=440:r=48000 -t 600 \
  -c:v libx264 -preset ultrafast -crf 30 -c:a aac in600.mp4

# 비트레이트 비교와 컨택트 시트용 프랙탈 영상
ffmpeg -f lavfi -i mandelbrot=size=640x360:rate=25:end_scale=0.05 -t 30 -c:v libx264 -pix_fmt yuv420p mb.mp4

# 라우드니스 실험용 핑크 노이즈 (실험값은 seed 없이 만든 파일로 쟀음. 같은 파일이 필요하면 seed를 지정)
ffmpeg -f lavfi -i anoisesrc=d=8:c=pink:a=0.1:r=48000:seed=1 -f lavfi -i anoisesrc=d=8:c=pink:a=0.5:r=48000:seed=2 \
  -f lavfi -i anoisesrc=d=8:c=pink:a=1.0:r=48000:seed=3 -filter_complex "[0:a][1:a][2:a]concat=n=3:v=0:a=1[a]" -map "[a]" loud.wav

각 글에 실린 파일(GOP 비교, 구간 복원용 XDCAM 유사 MXF, 인터레이스 비교 등)의 생성 명령은 해당 글에 함께 적었습니다. 8장의 화면 문자 실험 프레임 4장은 파이썬 Pillow로 1280×720 이미지를 그리고 그 위에 글자(맑은 고딕)를 직접 쓴 것이며, 글자 내용은 글에 모두 밝혔습니다.

#측정값을 읽을 때

  • 시간·처리량은 위 장비 한 대에서 잰 값입니다. 하드웨어, 드라이버, 모델 양자화, 입력 길이에 따라 크게 달라집니다.
  • AI 모델 실험은 temperature=0, seed=1로 실행했습니다. 같은 모델 파일이라도 Ollama나 모델이 갱신되면 결과가 달라질 수 있고, 같은 조건에서도 반드시 같은 문장이 나온다는 보장은 없습니다. 모든 AI 실험은 한 번 실행한 결과입니다.
  • 잡음 오디오(anoisesrc)는 seed를 지정하지 않으면 실행할 때마다 값이 달라집니다(같은 명령을 두 번 실행해 파일 해시가 다른 것을 확인했고, seed=1을 지정하면 같았습니다). 그래서 라우드니스 측정값(-34.6, -20.6, -14.6, -16.7 LUFS)은 소수점 이하가 재현할 때마다 조금 다를 수 있습니다. 잡음을 입힌 이미지 변형은 NumPy 난수의 시드를 고정했지만 라이브러리 버전에 따라 값이 달라질 수 있습니다.
  • 본문에서 "실행하지 않았다"고 밝힌 항목(음성 인식 모델, 전용 임베딩 모델, 얼굴·객체 인식, 클라우드 API 호출)은 이 환경에서 검증하지 않았습니다.

#결과가 다르게 나오면

결과가 본문과 다르면 오류일 수 있으니 문의 페이지로 알려 주세요. 확인 후 본문을 고치고 편집 원칙의 정정 내역에 기록합니다.