LLM은 실제로 비디오를 볼 수 없다. 가장 작은 수정 방법 (MIT)
요약
LLM이 비디오를 '멀티모달'로 처리한다고 해도, 실제로는 자막이나 일부 프레임만 읽는 한계가 있습니다. 이 글은 LLM이 비디오를 진정으로 이해하도록 돕는 오픈소스 도구 `claude-real-video`의 개발 과정을 소개합니다. 이 도구는 장면 인식 샘플링, 타임스탬프 트랜스크립트, 그리고 통합 MANIFEST 타임라인을 생성하여 모델에 제공합니다.
핵심 포인트
- LLM은 비디오를 완벽히 이해하지 못하며, 특정 요소(자막/프레임)만 읽는 한계가 있습니다.
- claude-real-video는 장면 인식 샘플링과 Whisper 기반 트랜스크립트를 결합하여 비디오 데이터를 구조화합니다.
- 이 도구는 사용자의 로컬 기기에서 실행되며, 여러 LLM(Claude, GPT 등)에 적용 가능합니다.
- 실시간 처리는 아니며, 프레임 사이의 미세한 움직임을 놓칠 수 있다는 한계가 있습니다.
모든 모델 카드에는 "멀티모달(multimodal)"이라고 적혀 있습니다. 그런데 이 모델에 실제 비디오 파일을 전달하면, 그것이 실질적으로 무엇을 의미하는지 알게 됩니다. ChatGPT는 자막 트랙을 읽고, Claude는 아예 비디오 파일 자체를 받지 못합니다. 모델은 자신이 대부분 본 적 없는 영상을 설명합니다.
저는 개인 콘텐츠 작업을 위해 매일 바이럴 비디오를 분석하기 때문에, 이 문제를 우회할 수 없었습니다. 그래서 작은 도구를 만들었습니다.
작동 원리 (The mechanism)
claude-real-video는 비디오를 LLM이 진정으로 읽을 수 있는 세 가지 요소로 변환합니다:
- 장면 인식 샘플링 프레임(Scene-aware sampled frames) — ffmpeg scene scores가 어느 지점에서 샘플링할지 결정하므로, 단순히 N초마다의 프레임이 아니라 그림이 바뀔 때 프레임을 얻을 수 있습니다.
--adaptive플래그는 느린 변형(실제 사용자 버그 보고: 임계값이 스쿼시/스트레치 모프를 완전히 놓침)을 처리합니다. - 타임스탬프가 찍힌 트랜스크립트(A timestamped transcript) — 기본적으로 whisper를 사용하며,
faster-whisper가 설치되어 있으면 인프로세스로 실행되며 여러 배 빠르고 자동 폴백 기능도 제공됩니다. - 하나의 MANIFEST 타임라인 — 프레임과 트랜스크립트를 단일 파일로 병합하여, 모델이 조각들로부터 추측하는 대신 비디오 순서대로 따라가게 합니다.
--text-anchors플래그는 자막 신호에 맞춰 강제로 프레임을 샘플링하므로 화면의 텍스트가 프레임 사이에 끼이는 일이 없습니다.
그러면 이 출력 폴더를 어떤 LLM(Claude, GPT, Gemini 또는 로컬 모델)에도 지정할 수 있습니다. 중간에 제 API는 없으며, 모든 것은 사용자의 기기에서 실행됩니다.
사용법 (Usage)
pip install claude-real-video
crv "video.mp4" -o out
솔직한 한계점 (Honest limitations)
실시간은 아닙니다. 90초짜리 비디오는 M-series Mac에서 모든 과정 포함 약 1~2분이 걸립니다. 프레임 샘플링이 여전히 프레임 사이의 움직임을 놓칠 수 있습니다. 위의 플래그들은 실제 GitHub 이슈에서 비롯된 최악의 경우를 패치합니다.
이것은 MIT 프로젝트이며, 현재 1,731개의 스타와 지난달 약 8천 건의 설치를 기록했습니다. 이를 통해 저는 문제가 결코 저 혼자만의 문제는 아니었음을 깨달았습니다:
https://github.com/HUANGCHIHHUNGLeo/claude-real-video
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기