# Ntsc-rs - 아날로그 TV와 VHS 아티팩트의 오픈소스 비디오 에뮬레이션

> Clean Markdown view of GeekNews topic #30250. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=30250](https://news.hada.io/topic?id=30250)
- GeekNews Markdown: [https://news.hada.io/topic/30250.md](https://news.hada.io/topic/30250.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-06-07T17:37:04+09:00
- Updated: 2026-06-07T17:37:04+09:00
- Original source: [ntsc.rs](https://ntsc.rs/)
- Points: 1
- Comments: 1

## Topic Body

- 가정용 컴퓨터에서 VHS 감성을 구현하는 **무료 오픈소스 비디오 효과**로, 아날로그 TV와 VHS 아티팩트를 정확히 에뮬레이션
- 단순 색상 조회표와 오버레이로 VHS 테이프 느낌을 흉내 내는 방식 대신, **NTSC 전송**과 VHS 인코딩의 실제 작동 방식을 모델링하는 알고리듬 사용
- 기반 알고리듬은 composite-video-simulator, zhuker/ntsc, ntscQT에서 개발된 알고리듬
- Rust로 작성됐으며 **멀티스레드**와 SIMD 가속을 적용해, ntscQT 같은 유사 효과와 달리 실제 NTSC 영상보다 훨씬 높은 해상도에서도 실시간 실행 가능
- 독립 실행형과 웹 애플리케이션뿐 아니라 After Effects, Premiere, **OpenFX** 호환 소프트웨어용 플러그인으로 제공되며 DaVinci Resolve, Hitfilm, Vegas 지원

---

### 개요
- **ntsc-rs**는 아날로그 TV와 VHS 아티팩트를 정확히 에뮬레이션하는 무료 오픈소스 비디오 효과
- 가정용 컴퓨터에서 VHS의 향수를 구현하는 도구이며, 다운로드 버전 0.9.4와 온라인 체험 제공
- 일반적인 VHS 효과는 단순 색상 조회표와 오버레이로 VHS 테이프의 외형을 눈대중으로 재현
- ntsc-rs는 NTSC 전송과 VHS 인코딩이 실제로 작동하는 방식을 모델링하는 알고리듬 사용
  - 기반 알고리듬 출처는 [composite-video-simulator](https://github.com/joncampbell123/composite-video-simulator/), [zhuker/ntsc](https://github.com/zhuker/ntsc), [ntscQT](https://github.com/JargeZ/ntscqt/)

### 구현과 제공 형태
- Rust로 작성된 구현체이며, 멀티스레드와 SIMD 가속 적용
- ntscQT 같은 유사 효과와 달리 실제 NTSC 영상보다 훨씬 높은 해상도에서도 실시간 실행 가능
- 제공 형태는 독립 실행형 애플리케이션, 웹 애플리케이션, 영상 편집 소프트웨어용 플러그인
- 플러그인은 After Effects, Premiere, OpenFX 호환 소프트웨어에서 사용 가능
  - OpenFX 호환 소프트웨어 예시는 DaVinci Resolve, Hitfilm, Vegas

## Comments



### Comment 59071

- Author: neo
- Created: 2026-06-07T17:37:07+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=48428025) 
- 새 매체의 **고유한 흔적**에 대한 Brian Eno의 인용을 떠올리게 됨:  
  “새 매체에서 지금 이상하고, 추하고, 불편하고, 불쾌하게 느끼는 것은 결국 반드시 그 매체의 시그니처가 된다. CD의 왜곡, 디지털 비디오의 흔들림, 8비트의 조악한 소리 같은 것들은 피할 수 있게 되는 순간부터 소중히 여겨지고 모방된다. 그것은 실패의 소리다. 많은 현대 예술은 사물이 통제를 벗어나고, 매체가 한계까지 밀려나 부서지는 소리다. 왜곡된 기타 소리는 그 소리를 담아야 할 매체에 비해 너무 큰 소리의 흔적이다. 갈라진 목소리로 노래하는 블루스 가수는 그것을 내보내는 목구멍보다 너무 강한 감정적 외침의 소리다. 거친 필름 입자와 바랜 흑백의 흥분은, 기록하도록 맡겨진 매체보다 너무 중대한 사건을 목격하는 데서 오는 흥분이다.” - Brian Eno
  - 추구되는 건 결함 자체라기보다 **그 시대의 분위기**라고 봄. 대부분은 그런 기술적 세부사항에 크게 주의를 기울이지 않음  
    예를 들어 80~90년대는 그 시절에 자란 사람에게도, 그렇지 않은 사람에게도 더 행복한 시대로 보이고, VHS 아티팩트 같은 결함이 보는 사람을 그 감성으로 데려감
  - “맞지만, 그래도”라고 말하고 싶음. 매체의 한계가 대부분에게 추구할 만한 매력으로 해석되는 건 맞고, 낮은 해상도 이미지를 출력하는 CRT의 **스캔라인** 같은 게 그런 예임  
    하지만 아날로그 오디오나 비디오에는 이후 기술에서 사라졌거나 심하게 저하된 특성도 있음. 예를 들어 바이닐 수준의 충실도를 내려면 MP3는 매우 높은 비트레이트가 필요하고(CD는 문제없이 가능함), CRT의 움직임 속 이미지 선명도는 현대 디스플레이가 아직 따라오지 못하며, 현대 디스플레이의 표본-유지(sample and hold) 특성 때문에 아마 영원히 그럴 수 있음
  - Marshall McLuhan도 비슷하게 말함:  
    “모든 새 매체는 이전 매체를 낡게 만들고, 그 이전 매체는 새 매체의 내용 또는 예술 형식이 된다.”  
    “낡은 기반이 새 상황의 내용이 되면, 보통의 주의에는 미학적 형상으로 나타난다. 동시에 새로운 회수 또는 향수가 태어난다.”
  - VHD에 녹화된 TV 영화의 **불안정한 일시정지 화면**과 탁한 화질은 전혀 그립지 않음. 3.5인치 디스크의 느린 속도와 낮은 신뢰성도 마찬가지임
  - VHS를 처음 본 사람들은 새 매체를 추하고 불쾌하게 여기기보다 **컬러, 소형화, 편의성**에 감탄하느라 바빴을 것 같음  
    대중적으로 크게 성공하는 새 기술은 보통 최첨단이고 인상적인 것으로 시작하며, 시간이 지나고 나서야 사람들이 깔보는 식으로 돌아보게 됨

- 문득 든 생각인데, 이런 TV 에뮬레이터류에서 **수직 발진기**가 살짝 틀어져 화면이 천천히 위로 말려 올라가는 상황을 구현한 건 본 적이 없는 것 같음
  - 이건 구현함. 신호에 주입되는 잡음량을 설정할 수 있고, 너무 많아지면 동기화를 잃어서 화면이 말리기 시작함  
    단순히 효과를 흉내 내는 게 아니라 실제로 **소프트웨어 NTSC 변조기/복조기**에 가까움  
    [https://github.com/LMP88959/NTSC-CRT](<https://github.com/LMP88959/NTSC-CRT>)
  - 조사하다가 ntsc-rs를 올렸는데, 나도 말한 것 같은 기능을 찾고 있었음  
    [https://codeberg.org/fsphil/hacktv](<https://codeberg.org/fsphil/hacktv>)도 살펴봤는데, HackRF로 송출하기 위한 여러 아날로그 TV 신호를 생성해 줌. 하지만 내가 원하는 건 반대로 **아날로그 수신기 에뮬레이터**에 가깝고, 잘못된 신호도 받아들이면서 실제 아날로그 TV처럼 망가지는 쪽임

- 이걸 반대로 학습하는 AI에 쓸 수 있지 않을까 함. 즉 오래된 **아날로그 TV/VHS 아티팩트**가 있는 영상에서 고품질 영상을 생성하도록 학습하는 것임  
  고품질 영상에서 시작해 이 라이브러리나 비슷한 도구로 아날로그/VHS 영상을 만들면 정답 데이터가 생기고, 그 데이터로 AI를 학습시킬 수 있음

- 색 부반송파 위상 이동과 **컬러 버스트 감지 실패**까지 에뮬레이션해야 아날로그 TV 아티팩트의 완전한 맛이 남  
  물론 PAL과 Hanover bars도 필요함
  - 그래서 NTSC를 흔히 “Never Twice the Same Color”라고 부르곤 했음

- 예전에 다른 방정식을 바탕으로 **C로 NTSC 에뮬레이터**를 작성한 적이 있음. 다만 위상 같은 여러 값을 명령줄 인자로 받아 제어하고, 입력으로 회색조 farbfeld 이미지를 받아 farbfeld로 출력하므로 영상이 아니라 정지 이미지용임

- 예전에 OpenEmulator의 놀라운 **NTSC 에뮬레이션**을 완전히 분석해 보려 했음  
  YouTube의 신호 처리 강의를 몇 편 듣다가 의욕을 잃는 토끼굴로 빠졌지만, 관심 있는 사람을 위해 꽤 많은 부분을 여기서 뜯어봤음: [https://observablehq.com/@zellyn/apple-ii-ntsc-emulation-ope...](<https://observablehq.com/@zellyn/apple-ii-ntsc-emulation-openemulator-explainer>)  
  위 페이지에서 링크한 JavaScript 포팅도 해 둠
  - 수년 동안 누가 NTSC 필터를 물어보면 설명해 줬음. 2000년대 중반보다 하드웨어가 훨씬 빨라졌으니, 덜 최적화된 구현도 더 많이 보고 싶었기 때문임  
    그 필터는 모든 색과 모든 위상 오프셋에 대한 커널을 미리 계산하고, 렌더링 중에는 부호 있는 RGB 연산을 했음. 우리가 자라며 접한 오래된 하드웨어의 특이함을 다시 만들 수 있다는 건, 그걸 신비화하지 않고 이해하게 해 준다는 점에서 만족스러움

- 왜 **NTSC**에는 이렇게 애정이 많고 PAL과 SECAM에는 이렇게 적을까?
  - 인터레이싱은 80~90년대 비디오와 거의 동의어임

- OpenFX 플러그인을 설치해서 DaVinci에서 테스트해 봤는데 빠르게 돌아가고, 제어 옵션이 많으며 결과도 훌륭함  
  아주 미묘한 느낌부터 거의 국처럼 뭉개지는 수준까지 가능함. 매개변수를 자동화하면 정말 흥미로워지고, 실제 에뮬레이션에 기반했다는 점도 좋음. 편집 작업에 꼭 쓸 것 같음

- 이런 분야가 활발히 개발되는 건 좋음. 다만 **아티팩트 시뮬레이션** 쪽 사람들이 어떻게 볼지 궁금함  
  보통 에뮬레이터용 셰이더 같은 형태로 자주 접하지만, 깨끗한 영상을 이런 식으로 구조적으로 열화시키는 수요도 요즘 영상 제작에서 큼. 제작자들은 90년대 캠코더 느낌을 원하지만, 촬영팀이 실제로 투박한 90년대 캠코더 하드웨어와 포맷을 쓰기는 어려움
  - 진짜 캠코더 영상 장면이 별로 없는 게 오히려 놀라움. 감독들은 실제 흑백 필름 카메라도 곧잘 꺼내 쓰지 않나?

- 좋음. 원래 이런 효과를 좋아했고, 예전에 훨씬 단순한 걸 직접 만들기도 했음  
  픽셀 하나를 r, g, b 세 값으로 나눠 옆으로 배치해서 **LED 동작**을 흉내 내는 방식이었음. 결국 웹사이트에서 줄무늬 느낌을 내는 이미지까지 만들었음: [https://github.com/victorqribeiro/oldTerminal](<https://github.com/victorqribeiro/oldTerminal>) 웹에서 canvas 없이 할 수 있었던 최선이었음  
  언젠가 현대 CSS로 다시 시도해 볼지도 모름
