Claude-real-video - any LLM can watch a video
개요
Claude-real-video(crv)는 LLM이 비디오를 시청할 수 있도록, 비디오에서 의미 있는 프레임과 오디오를 추출하여 로컬 환경에서 처리하는 도구입니다.
주요 내용
* 기존 LLM의 비디오 처리 한계: 대부분의 AI 도구는 비디오의 스크립트만 읽거나, 고정된 간격으로 프레임을 샘플링하여 빠른 장면 전환을 놓치는 등 비디오를 '실질적으로' 보지 못합니다. Gemini의 경우에도 비디오를 업로드하고 고정 간격으로 프레임을 샘플링합니다.
* Claude-real-video의 접근 방식:
* 로컬 처리: 비디오를 업로드하지 않고 사용자의 기기에서 직접 처리합니다.
* 의미 있는 프레임 추출: 고정 간격 샘플링 대신 장면 변경 감지(scene change detection)와 밀도 기반(density floor) 접근 방식을 사용하여 장면 변화가 있는 프레임과 각 장면에서 최소한의 프레임을 보장합니다.
* 중복 프레임 제거: 슬라이딩 윈도우(sliding-window) 기반 중복 제거(dedup)를 통해 near-duplicate 프레임을 제거하여 모델에 전달되는 프레임 수를 줄입니다.
* 오디오 전사: Whisper를 사용하여 오디오를 텍스트로 전사합니다.
* 결과물: 처리된 프레임(JPG), 오디오 전사 텍스트, MANIFEST.txt 파일로 구성된 폴더를 생성합니다.
* 사용 편의성: URL 또는 로컬 파일 경로를 입력하고, --scene, --fps-floor, --max-frames, --dedup-threshold, --dedup-window 등의 옵션을 통해 프레임 추출 및 중복 제거 방식을 조절할 수 있습니다. 로그인 필요한 콘텐츠의 경우 쿠키 파일을 사용할 수 있습니다.
* Python API 제공: claude_real_video.process 함수를 통해 Python 코드에서도 동일한 기능을 사용할 수 있습니다.
* 작동 방식 상세:
* Fetch: URL의 경우 yt-dlp를 사용하여 비디오를 가져오고, 로컬 파일은 그대로 사용합니다.
* Extract: ffmpeg을 사용하여 장면 변경 감지와 밀도 기반으로 프레임을 추출합니다.
* Dedup: 추출된 프레임 간의 픽셀 차이를 계산하여 중복을 제거합니다. report 옵션을 통해 프레임 선택 및 제거 과정을 시각화할 수 있습니다.
* Text: 비디오에 자막이 있는 경우 이를 우선적으로 사용하며, 없는 경우 Whisper로 오디오를 전사합니다.
* Audio (Optional): --keep-audio 옵션을 사용하면 원본 오디오 파일(audio.m4a)도 함께 저장되어, 오디오까지 처리 가능한 LLM에서 활용할 수 있습니다.
* Manifest: MANIFEST.txt는 추출된 프레임, 전사된 텍스트, 원본 오디오 정보 등을 요약하여 LLM이 비디오의 모든 요소를 이해하도록 돕습니다.
시사점
Claude-real-video는 LLM이 비디오 콘텐츠를 더 깊이 이해하고 분석할 수 있도록 하는 새로운 방법을 제시하며, 로컬 환경에서의 효율적인 비디오 처리 및 LLM과의 통합을 가능하게 합니다.
댓글
GitHub Discussions