- yt-dlp는 수천 개의 사이트에서 오디오·비디오를 다운로드할 수 있는 명령줄 기반 다운로드 도구로, youtube-dl의 포크 버전
- YouTube의 n/sig 복호화를 위해 새로 추가된 yt-dlp-ejs 모듈과 함께 외부 JavaScript 런타임(예: Deno, Node.js, Bun, QuickJS)이 필요
-
Deno가 기본 런타임으로 설정되어 있으며, 사용자는
--js-runtimes옵션으로 다른 런타임을 지정 가능 - 이 변경으로 YouTube 관련 기능을 완전하게 사용하려면 yt-dlp-ejs와 JS 런타임 설치가 필수
- 외부 런타임 의존성 추가는 YouTube 암호화 구조 변화에 대응하기 위한 필수 조치로, 향후 유지보수의 핵심 요소로 작용
yt-dlp 개요
- yt-dlp는 youtube-dl의 포크로, 더 이상 유지되지 않는 youtube-dlc를 기반으로 개발된 프로젝트
- 수천 개의 웹사이트에서 오디오 및 비디오를 다운로드할 수 있으며, 다양한 형식 선택·후처리·자막·플러그인 기능을 지원
YouTube 지원 관련 변경
- YouTube의 n/sig 값 복호화를 위해 yt-dlp-ejs 패키지가 필요
- 이 패키지는 Unlicense 하에 배포되며, MIT 및 ISC 라이선스 구성요소를 포함
- yt-dlp-ejs 실행에는 JavaScript 런타임이 필수
- 지원 런타임: deno(권장), node.js, bun, QuickJS
- 관련 설정은
--js-runtimes옵션으로 지정 가능
-
--no-js-runtimes옵션을 사용하면 기본 런타임 설정을 초기화할 수 있음
설치 및 의존성
- yt-dlp는 Python 3.10+ (CPython) 및 3.11+ (PyPy) 버전을 지원
- 강력히 권장되는 의존성:
- ffmpeg / ffprobe: 오디오·비디오 병합 및 후처리용
- yt-dlp-ejs: YouTube 암호화 해제용
- JavaScript 런타임: yt-dlp-ejs 실행용
- 선택적 네트워크 의존성으로 certifi, brotli, requests, curl_cffi 등이 있음
주요 명령 옵션
-
--js-runtimes RUNTIME[:PATH]: 사용할 JS 런타임 지정 -
--no-js-runtimes: 모든 JS 런타임 비활성화 -
--remote-components COMPONENT: 외부 JS 구성요소를 허용할 수 있는 옵션 -
--no-remote-components: 원격 구성요소 로드를 차단
중요성
- 이번 변경으로 yt-dlp는 YouTube의 최신 암호화 구조를 완전 지원하기 위해 외부 JS 런타임을 필수로 요구
- 이는 YouTube의 지속적인 보안·암호화 업데이트에 대응하기 위한 구조적 전환으로, 향후 유지보수 및 기능 확장에 핵심적인 변화임