yt-dlp/yt-dlp
요약
yt-dlp는 수천 개의 사이트에서 오디오와 비디오를 다운로드할 수 있는 강력한 명령줄 도구입니다. youtube-dl의 포크 버전으로, 다양한 옵션과 설정 기능을 통해 미디어 추출 및 관리를 지원합니다.
핵심 포인트
- 수천 개의 웹사이트를 지원하는 명령줄 기반 다운로더
- 네트워크, 자막, 후처리 등 매우 상세한 옵션 제공
- 바이너리, pip, 소스 타르볼 등 다양한 설치 방식 지원
- Unlicense 및 GPLv3+ 등 다양한 라이선스 포함
yt-dlp는 수천 개의 사이트를 지원하는 기능이 풍부한 명령줄 (Command-line) 오디오/비디오 다운로더입니다. 이 프로젝트는 현재 비활성화된 youtube-dlc를 기반으로 한 youtube-dl의 포크 (Fork)입니다.
-
설치 (INSTALLATION)
-
사용법 및 옵션 (USAGE AND OPTIONS)
-
일반 옵션 (General Options)
-
네트워크 옵션 (Network Options)
-
지리적 제한 (Geo-restriction)
-
비디오 선택 (Video Selection)
-
다운로드 옵션 (Download Options)
-
파일 시스템 옵션 (Filesystem Options)
-
썸네일 옵션 (Thumbnail Options)
-
인터넷 바로가기 옵션 (Internet Shortcut Options)
-
상세 출력 및 시뮬레이션 옵션 (Verbosity and Simulation Options)
-
우회 방법 (Workarounds)
-
비디오 포맷 옵션 (Video Format Options)
-
자막 옵션 (Subtitle Options)
-
인증 옵션 (Authentication Options)
-
후처리 옵션 (Post-processing Options)
-
SponsorBlock 옵션 (SponsorBlock Options)
-
추출기 옵션 (Extractor Options)
-
프리셋 별칭 (Preset Aliases)
-
설정 (CONFIGURATION)
-
출력 템플릿 (OUTPUT TEMPLATE)
-
포맷 선택 (FORMAT SELECTION)
-
메타데이터 수정 (MODIFYING METADATA)
-
추출기 인자 (EXTRACTOR ARGUMENTS)
-
플러그인 (PLUGINS)
-
yt-dlp 임베딩 (EMBEDDING YT-DLP)
-
youtube-dl로부터의 변경 사항 (CHANGES FROM YOUTUBE-DL)
-
기여하기 (CONTRIBUTING)
-
위키 (WIKI)
yt-dlp는 바이너리 (Binaries), pip 또는 제3자 패키지 관리자를 사용하여 설치할 수 있습니다. 자세한 지침은 위키 (Wiki)를 참조하십시오.
| 파일 | 설명 |
|---|---|
| yt-dlp | 플랫폼 독립적인 zipimport 바이너리. Python이 필요함 (Linux/BSD 권장) |
| ... | |
| 파일 | 설명 |
| --- | --- |
| yt-dlp_linux | Linux (glibc 2.17+) 독립형 x86_64 바이너리 |
| ... | |
| 파일 | 설명 |
| --- | --- |
| yt-dlp.tar.gz | 소스 타르볼 (Source tarball) |
| ... |
GPG 서명을 검증하는 데 사용할 수 있는 공개 키 (Public key)는 여기에서 확인할 수 있습니다. 사용 예시:
curl -L https://github.com/yt-dlp/yt-dlp/raw/master/public.key | gpg --import
gpg --verify SHA2-256SUMS.sig SHA2-256SUMS
gpg --verify SHA2-512SUMS.sig SHA2-512SUMS
yt-dlp는 Unlicense 라이선스 하에 배포되지만, 많은 릴리스 파일에는 다른 라이선스를 가진 다른 프로젝트의 코드가 포함되어 있습니다.
가장 눈에 띄는 점은, PyInstaller로 번들링된 실행 파일에는 GPLv3+ 라이선스가 적용된 코드가 포함되어 있으며, 따라서 결합된 저작물은 GPLv3+ 라이선스를 따릅니다.
zipimport Unix 실행 파일 (yt-dlp)는 meriyah의 ISC 라이선스 코드와 astring의 MIT 라이선스 코드를 포함하고 있습니다.
자세한 내용은 THIRD_PARTY_LICENSES.txt를 참조하십시오.
Git 저장소, 소스 타르볼 (yt-dlp.tar.gz
), PyPI 소스 배포판(source distribution) 및 PyPI 빌드 배포판(wheel)에는 Unlicense 라이선스 하에 라이선스가 부여된 코드만 포함되어 있습니다.
참고: 매뉴얼 페이지(manpages), 셸 완성(shell completion, 자동 완성) 파일 등은 소스 타르볼(source tarball) 내에서 사용할 수 있습니다.
릴리스 바이너리(release binaries)를 사용 중이라면
yt-dlp -U
를 사용하여 업데이트할 수 있습니다.
pip로 설치했다면, 프로그램을 설치할 때 사용했던 명령어를 단순히 다시 실행하십시오.
기타 제3자 패키지 관리자(third-party package managers)의 경우, 위키(wiki)를 확인하거나 해당 문서(documentation)를 참조하십시오.
현재 바이너리에는 stable, nightly, master 세 가지 릴리스 채널(release channels)이 있습니다.
stable은 기본 채널로, (대체로) 월 단위 일정으로 게시되는 릴리스를 제공합니다. stable이라는 이름이 붙은 이유는 많은 변경 사항이 nightly 또는 master 릴리스 채널의 사용자들에 의해 테스트되었기 때문이지만
또한 --update-to <repository> (<owner>/<repository>)
를 사용하여 완전히 다른 리포지토리 (repository)의 채널로 업데이트할 수도 있습니다. 다만, 업데이트하려는 리포지토리에 주의하십시오. 다른 리포지토리에서 제공하는 바이너리 (binaries)에 대해서는 검증이 수행되지 않습니다.
사용 예시:
yt-dlp --update-to master
master 채널로 전환하고 최신 릴리스 (release)로 업데이트
yt-dlp --update-to stable@2023.07.06
stable 채널의 2023.07.06 태그 (tag)로 업그레이드/다운그레이드
yt-dlp --update-to 2023.10.07
현재 채널에 존재한다면 2023.10.07 태그로 업그레이드/다운그레이드
yt-dlp --update-to example/yt-dlp@2023.09.24
example/yt-dlp 리포지토리의 2023.09.24 태그 릴리스로 업그레이드/다운그레이드
중요: stable 릴리스에서 문제를 겪고 있는 사용자는 버그 리포트 (bug report)를 제출하기 전에 nightly 릴리스를 설치하거나 업데이트해야 합니다:
# 실행 파일/바이너리에서 stable으로부터 nightly로 업데이트하려면:
yt-dlp --update-to nightly
# pip로 nightly를 설치하려면:
...
90일보다 오래된 yt-dlp 버전을 실행할 때는 최신 버전으로 업데이트할 것을 권장하는 경고 메시지가 표시됩니다.
명령어 또는 설정 파일에 --no-update를 추가하여 이 경고를 억제할 수 있습니다.
Python 버전 3.10+ (CPython) 및 3.11+ (PyPy)를 지원합니다. 다른 버전 및 구현체는 올바르게 작동할 수도 있고 그렇지 않을 수도 있습니다.
다른 모든 의존성 (dependencies)은 선택 사항이지만, ffmpeg, ffprobe, yt-dlp-ejs 및 지원되는 JavaScript 런타임/엔진 (runtime/engine) 사용을 강력히 권장합니다.
ffmpeg 및 ffprobe - 분리된 비디오 및 오디오 파일을 병합하고 다양한 후처리 (post-processing) 작업을 수행하는 데 필수적입니다. 라이선스는 빌드에 따라 다릅니다. ffmpeg는 매우 중요한 의존성이므로, 저희는 yt-dlp/FFmpeg-Builds에서 자체 빌드를 제공합니다. 과거에는 yt-dlp 사용자들의 일반적인 문제를 해결하기 위해 이 빌드들에 패치 (patches)를 적용했으나, 현재 저희의 빌드는 업스트림 (upstream) ffmpeg와 동일합니다. 자세한 내용은 readme를 참조하십시오.
중요: 필요한 것은 ffmpeg *바이너리 (binary)*이며, 동일한 이름의 Python 패키지가 아닙니다.
yt-dlp-ejs - YouTube의 완전한 지원을 위해 필요합니다. Unlicense 라이선스 하에 배포되며, MIT 및 ISC 구성 요소를 포함합니다. yt-dlp-ejs를 실행하려면 deno (권장), node.js, bun, 또는 QuickJS와 같은 JavaScript 런타임/엔진이 필요합니다. 위키(wiki)를 참조하십시오.
certifi - Mozilla의 루트 인증서 번들을 제공합니다. MPLv2 라이선스 하에 배포됩니다.
brotli 또는 brotlicffi - Brotli 콘텐츠 인코딩 지원을 제공합니다. 둘 다 MIT 라이선스 하에 배포됩니다.
websockets - 웹소켓 (websocket)을 통한 다운로드를 위해 필요합니다. BSD-3-Clause 라이선스 하에 배포됩니다.
requests - HTTP 라이브러리입니다. HTTPS 프록시 및 지속 연결 (persistent connections) 지원을 위해 필요합니다. Apache-2.0 라이선스 하에 배포됩니다.
다음은 브라우저 요청을 모방 (impersonating) 하는 기능을 제공합니다. 이는 TLS 핑거프린팅 (TLS fingerprinting)을 사용하는 일부 사이트에서 필요할 수 있습니다.
curl_cffi (권장) - curl-impersonate를 위한 Python 바인딩 (binding)입니다. Chrome, Edge 및 Safari에 대한 모방 대상을 제공합니다. MIT 라이선스 하에 배포됩니다. curl-cffi extra를 사용하여 설치할 수 있습니다 (예: pip install "yt-dlp[default,curl-cffi]").
- 현재 대부분의 빌드에 포함되어 있습니다. 단,
yt-dlp(Unix zipimport binary) 및yt-dlp_x86(Windows 32-bit)은 제외됩니다.
mutagen - 특정 형식에서 --embed-thumbnail을 위해 필요합니다. GPLv2+ 라이선스 하에 배포됩니다.
AtomicParsley - mutagen 또는 ffmpeg를 사용할 수 없는 경우 mp4 / m4a 파일에서 --embed-thumbnail을 위해 필요합니다. GPLv2+ 라이선스 하에 배포됩니다.
xattr, pyxattr 또는 setfattr - Mac 및 BSD에서 xattr 메타데이터 (--xattrs)를 작성하기 위해 필요합니다. 각각 MIT, LGPL2.1 및 GPLv2+ 라이선스 하에 배포됩니다.
pycryptodomex - AES-128 HLS 스트림 및 기타 다양한 데이터를 복호화하기 위해 필요합니다. BSD-2-Clause 라이선스 하에 배포됩니다.
phantomjs - JavaScript를 실행해야 하는 일부 추출기 (extractors)에서 사용됩니다. 더 이상 YouTube용으로는 사용되지 않습니다. 가까운 시일 내에 지원 중단 (deprecated) 될 예정입니다. BSD-3-Clause 라이선스 하에 배포됩니다.
secretstorage - --cookies-from-browser를 위해 필요합니다.
Linux에서 Chromium 기반 브라우저의 쿠키를 복호화하는 동안 Gnome 키링 (keyring)에 접근하기 위해 필요합니다. BSD-3-Clause 라이선스 하에 배포됩니다.
--downloader와 함께 사용하려는 모든 외부 다운로더:
rtmpdump - rtmp 스트림을 다운로드하기 위해 사용합니다. 대신 --downloader ffmpeg를 사용하여 ffmpeg를 사용할 수 있습니다. GPLv2+ 라이선스 하에 배포됩니다.
mplayer 또는 mpv - rtsp / mms 스트림을 다운로드하기 위해 사용합니다. 대신 --downloader ffmpeg를 사용하여 ffmpeg를 사용할 수 있습니다. GPLv2+ 라이선스 하에 배포됩니다.
의존성(dependencies)을 사용하거나 재배포하려면 각 의존성의 라이선스 약관에 동의해야 합니다.
독립 실행형(standalone) 릴리스 바이너리는 Python 인터프리터와 *****로 표시된 패키지들이 포함된 상태로 빌드됩니다.
시도 중인 작업에 필요한 의존성이 없는 경우, yt-dlp가 경고를 표시합니다. 현재 사용 가능한 모든 의존성은 --verbose 출력의 상단에서 확인할 수 있습니다.
독립 실행형 실행 파일(executable)을 빌드하려면 Python과 pyinstaller (필요한 경우 yt-dlp의 선택적 의존성 포함)가 있어야 합니다. 실행 파일은 사용된 Python과 동일한 CPU 아키텍처를 대상으로 빌드됩니다.
다음 명령어를 실행할 수 있습니다:
python devscripts/install_deps.py --include-group pyinstaller
python devscripts/make_lazy_extractors.py
python -m bundle.pyinstaller
일부 시스템에서는 python 대신 py 또는 python3를 사용해야 할 수도 있습니다.
python -m bundle.pyinstaller는 --onefile/-F 또는 --onedir/-D와 같이 pyinstaller에 전달할 수 있는 모든 인자를 허용하며, 이에 대한 자세한 내용은 이곳에 문서화되어 있습니다.
참고: Pyinstaller 4.4 미만 버전은 가상 환경(virtual environment)을 사용하지 않고 Windows 스토어에서 설치된 Python을 지원하지 않습니다.
중요: python -m bundle.pyinstaller를 사용하는 대신 pyinstaller를 직접 실행하는 것은 공식적으로 지원되지 않습니다. 이는 올바르게 작동할 수도 있고 그렇지 않을 수도 있습니다.
빌드 도구로 python (3.10+), zip, make (GNU), pandoc *, pytest * 가 필요합니다.
이것들을 설치한 후, 단순히 make를 실행하면 됩니다.
make yt-dlp를 실행할 수도 있습니다.
대신 추가 파일들을 업데이트하지 않고 바이너리(binary)만 컴파일합니다. (*****로 표시된 빌드 도구들은 이 작업에 필요하지 않습니다.)
-
yt-dlp를 위한 의존성 설치:devscripts/install_deps.py -
현재 날짜를 기반으로 버전 번호 업데이트:
devscripts/update-version.py -
실행 파일의 빌드 변체(build variant) 설정:
devscripts/set-variant.py -
짧은 커밋 메시지를 사용하여 마크다운 변경 로그(changelog)를 생성하고 업데이트:
devscripts/make_changelog.py
CONTRIBUTORS 파일.
- 지연 추출기(lazy extractors) 생성: 바이너리(모든 변체)를 빌드하기 전에 이를 실행하면 시작 성능(startup performance)이 향상됩니다.
devscripts/make_lazy_extractors.py를 실행하세요. 지연 추출기 로딩을 강제로 비활성화하려면 환경 변수YTDLP_NO_LAZY_EXTRACTORS를 비어 있지 않은 값으로 설정하십시오.
참고: 자세한 내용은 --help를 참조하세요.
GitHub에서 프로젝트를 포크(fork)한다면, 포크한 저장소의 빌드 워크플로우(build workflow)를 실행하여 선택한 버전들을 아티팩트(artifacts)로 자동 빌드할 수 있습니다. 또는 릴리스(release) 워크플로우를 실행하거나 나이틀리(nightly) 워크플로우를 활성화하여 전체 (사전) 릴리스를 생성할 수 있습니다.
yt-dlp [OPTIONS] [--] URL [URL...]
팁: 키워드로 검색하려면 CTRL + F (또는 Command + F)를 사용하세요.
-h, --help 이 도움말 텍스트를 출력하고 종료합니다.
--version 프로그램 버전을 출력하고 종료합니다.
-U, --update 이 프로그램을 최신 버전으로 업데이트합니다.
...
--proxy URL 지정된 HTTP/HTTPS/SOCKS 프록시를 사용합니다. SOCKS 프록시를 활성화하려면 적절한 스킴(scheme)을 지정하십시오. 예: socks5://user:pass@127.0.0.1:1080/.
...
--geo-verification-proxy URL 일부 지리적 제한(geo-restricted) 사이트의 IP 주소를 확인하기 위해 이 프록시를 사용합니다. 기본 프록시는 --proxy에 의해 지정된 프록시입니다 (또는 해당 옵션이 ...
-I, --playlist-items ITEM_SPEC 다운로드할 항목의 쉼표로 구분된 playlist_index입니다. "[START]:[STOP][:STEP]"을 사용하여 범위를 지정할 수 있습니다. 하위 호환성을 위해 ...
-N, --concurrent-fragments N dash/hlsnative 비디오의 조각(fragments) 중 동시에 다운로드할 조각의 수입니다 (기본값은 1입니다).
...
-a, --batch-file FILE 다운로드할 URL이 포함된 파일 (stdin의 경우 "-"), 한 줄당 하나의 URL.
"#", ";" 또는 "]"로 시작하는 줄은 ...
--write-thumbnail 썸네일 이미지를 디스크에 저장
--no-write-thumbnail 썸네일 이미지를 디스크에 저장하지 않음 (기본값)
--write-all-thumbnails 모든 썸네일 이미지 형식을 디스크에 저장
...
--write-link 현재 플랫폼에 따라 인터넷 바로가기 파일(.url, .webloc 또는 .desktop)을 작성합니다. URL은 OS에 의해 캐싱될 수 있습니다...
-q, --quiet 정숙 모드 (quiet mode)를 활성화합니다. --verbose와 함께 사용하면 로그를 stderr(표준 에러)로 출력합니다.
--no-quiet 정숙 모드를 비활성화합니다. (기본값)
...
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Python (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기