yt-dlp는 수천 개의 사이트를 지원하는 기능이 풍부한 명령줄 오디오/비디오 다운로더입니다. 이 프로젝트는 현재 비활성화된 youtube-dlc를 기반으로 하는 youtube-dl의 포크입니다.
설치
자세한 지침
릴리스 파일
업데이트
종속성
엮다
사용법 및 옵션
일반 옵션
네트워크 옵션
지역 제한
비디오 선택
다운로드 옵션
파일 시스템 옵션
썸네일 옵션
인터넷 바로가기 옵션
자세한 내용 및 시뮬레이션 옵션
해결 방법
비디오 형식 옵션
자막 옵션
인증 옵션
후처리 옵션
스폰서블록 옵션
추출기 옵션
구성
구성 파일 인코딩
netrc를 사용한 인증
환경 변수에 대한 참고 사항
출력 템플릿
출력 템플릿 예
형식 선택
필터링 형식
형식 정렬
형식 선택 예
메타데이터 수정
메타데이터 예시 수정
추출기 인수
플러그인
플러그인 설치
플러그인 개발
YT-DLP 삽입
삽입 예시
YOUTUBE-DL의 변경 사항
새로운 기능
기본 동작의 차이점
더 이상 사용되지 않는 옵션
기여
이슈 열기
개발자 지침
위키
FAQ
바이너리, pip 또는 타사 패키지 관리자를 사용하여 yt-dlp를 설치할 수 있습니다. 자세한 지침은 위키를 참조하세요.
파일 | 설명 |
---|---|
yt-dlp | 플랫폼 독립적인 zipimport 바이너리. Python 필요( Linux/BSD 에 권장) |
yt-dlp.exe | Windows(Win8+) 독립형 x64 바이너리( Windows 에 권장) |
yt-dlp_macos | 범용 MacOS(10.15+) 독립 실행형 실행 파일( MacOS 에 권장) |
파일 | 설명 |
---|---|
yt-dlp_x86.exe | Windows(Win8+) 독립형 x86(32비트) 바이너리 |
yt-dlp_linux | Linux 독립형 x64 바이너리 |
yt-dlp_linux_armv7l | Linux 독립형 armv7l(32비트) 바이너리 |
yt-dlp_linux_aarch64 | Linux 독립형 aarch64(64비트) 바이너리 |
yt-dlp_win.zip | 패키지되지 않은 Windows 실행 파일(자동 업데이트 없음) |
yt-dlp_macos.zip | 패키지되지 않은 MacOS(10.15+) 실행 파일(자동 업데이트 없음) |
yt-dlp_macos_legacy | MacOS(10.9+) 독립형 x64 실행 파일 |
파일 | 설명 |
---|---|
yt-dlp.tar.gz | 소스 타르볼 |
SHA2-512SUMS | GNU 스타일 SHA512 합계 |
SHA2-512SUMS.sig | SHA512 합계에 대한 GPG 서명 파일 |
SHA2-256SUMS | GNU 스타일 SHA256 합계 |
SHA2-256SUMS.sig | SHA256 합계에 대한 GPG 서명 파일 |
GPG 서명을 확인하는 데 사용할 수 있는 공개 키는 여기에서 확인할 수 있습니다. 사용 예:
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
참고 : 맨페이지, 셸 완성(자동 완성) 파일 등은 소스 tarball 내에서 사용할 수 있습니다.
릴리스 바이너리를 사용하는 경우 yt-dlp -U
사용하여 업데이트할 수 있습니다.
pip로 설치한 경우 프로그램 설치에 사용한 것과 동일한 명령을 다시 실행하면 됩니다.
다른 타사 패키지 관리자에 대해서는 Wiki를 참조하거나 해당 설명서를 참조하세요.
현재 바이너리에는 stable
, nightly
및 master
의 세 가지 릴리스 채널이 있습니다.
stable
기본 채널이며 nightly
및 master
채널 사용자가 많은 변경 사항을 테스트했습니다.
nightly
채널에는 프로젝트의 새로운 패치 및 변경 사항에 대한 스냅샷을 위해 매일 자정(UTC)에 빌드되도록 예정된 릴리스가 있습니다. yt-dlp 일반 사용자에게 권장되는 채널 입니다. nightly
릴리스는 yt-dlp/yt-dlp-nightly-builds에서 사용하거나 yt-dlp
PyPI 패키지(pip의 --pre
플래그로 설치할 수 있음)의 개발 릴리스로 사용할 수 있습니다.
master
채널은 마스터 브랜치에 푸시할 때마다 빌드되는 릴리스를 제공하며 최신 수정 사항과 추가 사항이 포함되지만 회귀 가능성이 더 높을 수도 있습니다. yt-dlp/yt-dlp-master-builds에서 사용할 수 있습니다.
--update
/ -U
사용하면 릴리스 바이너리는 현재 채널로만 업데이트됩니다. --update-to CHANNEL
사용하면 최신 버전을 사용할 수 있을 때 다른 채널로 전환할 수 있습니다. --update-to [CHANNEL@]TAG
사용하여 채널의 특정 태그로 업그레이드하거나 다운그레이드할 수도 있습니다.
--update-to
(
)를 사용하여 완전히 다른 저장소의 채널을 업데이트할 수도 있습니다. 하지만 어떤 저장소로 업데이트할지 주의하세요. 다른 저장소의 바이너리에 대해서는 확인이 수행되지 않습니다.
사용 예:
yt-dlp --update-to master
master
채널로 전환하고 최신 릴리스로 업데이트합니다.
yt-dlp --update-to [email protected]
stable
채널 태그 2023.07.06
으로 출시하기 위해 업그레이드/다운그레이드
yt-dlp --update-to 2023.10.07
현재 채널에 태그 2023.10.07
이 있는 경우 태그 2023.10.07로 업그레이드/다운그레이드
yt-dlp --update-to example/[email protected]
example/yt-dlp
저장소(태그 2023.09.24
에서 릴리스로 업그레이드/다운그레이드
중요 : stable
릴리스에 문제가 있는 사용자는 버그 보고서를 제출하기 전에 nightly
릴리스를 설치하거나 업데이트해야 합니다.
# To update to nightly from stable executable/binary: yt-dlp --update-to nightly # To install nightly with pip: python3 -m pip install -U --pre "yt-dlp[default]"
Python 버전 3.9+(CPython) 및 3.10+(PyPy)이 지원됩니다. 다른 버전과 구현은 올바르게 작동할 수도 있고 작동하지 않을 수도 있습니다.
다른 모든 종속성은 선택 사항이지만 ffmpeg
및 ffprobe
적극 권장합니다.
ffmpeg 및 ffprobe - 별도의 비디오 및 오디오 파일을 병합하고 다양한 후처리 작업에 필요합니다. 라이센스는 빌드에 따라 다릅니다.
ffmpeg에는 yt-dlp와 함께 사용할 때 다양한 문제를 일으키는 버그가 있습니다. ffmpeg는 매우 중요한 종속성이므로 yt-dlp/FFmpeg-Builds에서 이러한 문제 중 일부에 대한 패치가 포함된 맞춤 빌드를 제공합니다. 이러한 빌드로 해결된 특정 문제에 대한 자세한 내용은 Readme를 참조하세요.
중요 : 필요한 것은 동일한 이름의 Python 패키지가 아닌 ffmpeg 바이너리 입니다.
certifi * - Mozilla의 루트 인증서 번들을 제공합니다. MPLv2에 따라 라이선스가 부여됨
brotli * 또는 brotlicffi - Brotli 콘텐츠 인코딩을 지원합니다. 둘 다 MIT 1 2 에 따라 라이센스가 부여되었습니다.
websockets * - websocket을 통해 다운로드하는 경우. BSD-3-Clause에 따라 라이센스가 부여됨
요청 * - HTTP 라이브러리. HTTPS 프록시 및 영구 연결을 지원합니다. Apache-2.0에 따라 라이센스가 부여됨
다음은 브라우저 요청을 가장하기 위한 지원을 제공합니다. 이는 TLS 지문 인식을 사용하는 일부 사이트에 필요할 수 있습니다.
컬_cffi (권장) - 컬-가장을 위한 Python 바인딩입니다. Chrome, Edge 및 Safari에 대한 가장 대상을 제공합니다. MIT 라이선스
curl-cffi
그룹과 함께 설치할 수 있습니다(예: pip install "yt-dlp[default,curl-cffi]"
현재 yt-dlp.exe
, yt-dlp_linux
및 yt-dlp_macos
빌드에 포함되어 있습니다.
mutagen * - 특정 형식의 --embed-thumbnail
에 사용됩니다. GPLv2+에 따라 라이선스가 부여됨
AtomicParsley - mutagen
/ ffmpeg
사용할 수 없는 경우 mp4
/ m4a
파일의 --embed-thumbnail
에 사용됩니다. GPLv2+에 따라 라이선스가 부여됨
xattr , pyxattr 또는 setfattr - Mac 및 BSD 에서 xattr 메타데이터( --xattr
)를 작성하는 데 사용됩니다. 각각 MIT, LGPL2.1 및 GPLv2+에 따라 라이센스가 부여되었습니다.
pycryptodomex * - AES-128 HLS 스트림 및 기타 다양한 데이터를 해독합니다. BSD-2-Clause에 따라 라이센스가 부여됨
phantomjs - 자바스크립트를 실행해야 하는 추출기에 사용됩니다. BSD-3-Clause에 따라 라이센스가 부여됨
secretstorage * - --cookies-from-browser
Linux 에서 Chromium 기반 브라우저의 쿠키를 해독하는 동안 Gnome 키링에 액세스합니다. BSD-3-Clause에 따라 라이센스가 부여됨
--downloader
와 함께 사용하려는 외부 다운로더
avconv 및 avprobe - 이제 ffmpeg에 대한 대안이 더 이상 사용되지 않습니다 . 라이센스는 빌드에 따라 다릅니다.
sponskrub - 현재 더 이상 사용되지 않는 sponskrub 옵션을 사용합니다. GPLv3+에 따라 라이선스가 부여됨
rtmpdump - rtmp
스트림을 다운로드합니다. --downloader ffmpeg
와 함께 ffmpeg를 대신 사용할 수 있습니다. GPLv2+에 따라 라이선스가 부여됨
mplayer 또는 mpv - rstp
/ mms
스트림을 다운로드합니다. --downloader ffmpeg
와 함께 ffmpeg를 대신 사용할 수 있습니다. GPLv2+에 따라 라이선스가 부여됨
종속성을 사용하거나 재배포하려면 해당 라이센스 조건에 동의해야 합니다.
독립 실행형 릴리스 바이너리는 Python 인터프리터와 * 로 표시된 패키지가 포함되어 빌드됩니다.
시도 중인 작업에 필요한 종속성이 없으면 yt-dlp가 경고합니다. 현재 사용 가능한 모든 종속성은 --verbose
출력 상단에 표시됩니다.
독립 실행형 실행 파일을 빌드하려면 Python과 pyinstaller
(필요한 경우 yt-dlp의 선택적 종속성도 포함)가 있어야 합니다. 실행 파일은 사용된 Python과 동일한 CPU 아키텍처용으로 빌드됩니다.
다음 명령을 실행할 수 있습니다.
python3 devscripts/install_deps.py --include pyinstaller python3 devscripts/make_lazy_extractors.py python3 -m bundle.pyinstaller
일부 시스템에서는 python3
대신 py
또는 python
사용해야 할 수도 있습니다.
python -m bundle.pyinstaller
--onefile/-F
또는 --onedir/-D
와 같이 pyinstaller
에 전달할 수 있는 모든 인수를 허용합니다. 이에 대한 자세한 내용은 여기에서 설명합니다.
참고 : 4.4 이하의 Pyinstaller 버전은 가상 환경을 사용하지 않고 Windows 스토어에서 설치된 Python을 지원하지 않습니다.
중요 : python -m bundle.pyinstaller
사용하는 대신 pyinstaller
직접 실행하는 것은 공식적으로 지원되지 않습니다 . 이는 올바르게 작동할 수도 있고 작동하지 않을 수도 있습니다.
python
(3.9+), zip
, make
(GNU), pandoc
* 및 pytest
* 빌드 도구가 필요합니다.
이것들을 설치한 후 간단히 make
실행하세요.
추가 파일을 업데이트하지 않고 바이너리만 컴파일하기 위해 대신 make yt-dlp
실행할 수도 있습니다. ( * 로 표시된 빌드 도구는 필요하지 않습니다)
devscripts/install_deps.py
- yt-dlp에 대한 종속성을 설치합니다.
devscripts/update-version.py
- 현재 날짜를 기준으로 버전 번호를 업데이트합니다.
devscripts/set-variant.py
- 실행 파일의 빌드 변형을 설정합니다.
devscripts/make_changelog.py
- 짧은 커밋 메시지를 사용하여 마크다운 변경 로그를 만들고 CONTRIBUTORS
파일을 업데이트합니다.
devscripts/make_lazy_extractors.py
- 지연 추출기를 만듭니다. 바이너리(모든 변형)를 빌드하기 전에 이를 실행하면 시작 성능이 향상됩니다. 지연 추출기 로드를 강제로 비활성화하려면 환경 변수 YTDLP_NO_LAZY_EXTRACTORS
비어 있지 않은 값으로 설정하세요.
참고: 자세한 내용은 --help
를 참조하세요.
GitHub에서 프로젝트를 포크하는 경우 포크의 빌드 워크플로를 실행하여 선택한 버전을 아티팩트로 자동 빌드할 수 있습니다. 또는 릴리스 워크플로를 실행하거나 야간 워크플로를 활성화하여 전체(사전) 릴리스를 생성할 수 있습니다.
yt-dlp [OPTIONS] [--] URL [URL...]
Ctrl+F
친구입니다 :D
-h, --help Print this help text and exit --version Print program version and exit -U, --update Update this program to the latest version --no-update Do not check for updates (default) --update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master -i, --ignore-errors Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails --no-abort-on-error Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default) --abort-on-error Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors) --dump-user-agent Display the current user-agent and exit --list-extractors List all supported extractors and exit --extractor-descriptions Output descriptions of all supported extractors and exit --use-extractors NAMES Extractor names to use separated by commas. You can also use regexes, "all", "default" and "end" (end URL matching); e.g. --ies "holodex.*,end,youtube". Prefix the name with a "-" to exclude it, e.g. --ies default,-generic. Use --list-extractors for a list of extractor names. (Alias: --ies) --default-search PREFIX Use this prefix for unqualified URLs. E.g. "gvsearch2:python" downloads two videos from google videos for the search term "python". Use the value "auto" to let yt-dlp guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching --ignore-config Don't load any more configuration files except those given to --config-locations. For backward compatibility, if this option is found inside the system configuration file, the user configuration is not loaded. (Alias: --no-config) --no-config-locations Do not load any custom configuration files (default). When given inside a configuration file, ignore all previous --config-locations defined in the current file --config-locations PATH Location of the main configuration file; either the path to the config or its containing directory ("-" for stdin). Can be used multiple times and inside other configuration files --plugin-dirs PATH Path to an additional directory to search for plugins. This option can be used multiple times to add multiple directories. Note that this currently only works for extractor plugins; postprocessor plugins can only be loaded from the default plugin directories --flat-playlist Do not extract the videos of a playlist, only list them --no-flat-playlist Fully extract the videos of a playlist (default) --live-from-start Download livestreams from the start. Currently only supported for YouTube (Experimental) --no-live-from-start Download livestreams from the current time (default) --wait-for-video MIN[-MAX] Wait for scheduled streams to become available. Pass the minimum number of seconds (or range) to wait between retries --no-wait-for-video Do not wait for scheduled streams (default) --mark-watched Mark videos watched (even with --simulate) --no-mark-watched Do not mark videos watched (default) --color [STREAM:]POLICY Whether to emit color codes in output, optionally prefixed by the STREAM (stdout or stderr) to apply the setting to. Can be one of "always", "auto" (default), "never", or "no_color" (use non color terminal sequences). Use "auto-tty" or "no_color-tty" to decide based on terminal support only. Can be used multiple times --compat-options OPTS Options that can help keep compatibility with youtube-dl or youtube-dlc configurations by reverting some of the changes made in yt-dlp. See "Differences in default behavior" for details --alias ALIASES OPTIONS Create aliases for an option string. Unless an alias starts with a dash "-", it is prefixed with "--". Arguments are parsed according to the Python string formatting mini-language. E.g. --alias get-audio,-X "-S=aext:{0},abr -x --audio-format {0}" creates options "--get-audio" and "-X" that takes an argument (ARG0) and expands to "-S=aext:ARG0,abr -x --audio-format ARG0". All defined aliases are listed in the --help output. Alias options can trigger more aliases; so be careful to avoid defining recursive options. As a safety measure, each alias may be triggered a maximum of 100 times. This option can be used multiple times
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme, e.g. socks5://user:[email protected]:1080/. Pass in an empty string (--proxy "") for direct connection --socket-timeout SECONDS Time to wait before giving up, in seconds --source-address IP Client-side IP address to bind to --impersonate CLIENT[:OS] Client to impersonate for requests. E.g. chrome, chrome-110, chrome:windows-10. Pass --impersonate="" to impersonate any client. Note that forcing impersonation for all requests may have a detrimental impact on download speed and stability --list-impersonate-targets List available clients to impersonate. -4, --force-ipv4 Make all connections via IPv4 -6, --force-ipv6 Make all connections via IPv6 --enable-file-urls Enable file:// URLs. This is disabled by default for security reasons.
--geo-verification-proxy URL Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading --xff VALUE How to fake X-Forwarded-For HTTP header to try bypassing geographic restriction. One of "default" (only when known to be useful), "never", an IP block in CIDR notation, or a two-letter ISO 3166-2 country code
-I, --playlist-items ITEM_SPEC Comma separated playlist_index of the items to download. You can specify a range using "[START]:[STOP][:STEP]". For backward compatibility, START-STOP is also supported. Use negative indices to count from the right and negative STEP to download in reverse order. E.g. "-I 1:3,7,-5::2" used on a playlist of size 15 will download the items at index 1,2,3,7,11,13,15 --min-filesize SIZE Abort download if filesize is smaller than SIZE, e.g. 50k or 44.6M --max-filesize SIZE Abort download if filesize is larger than SIZE, e.g. 50k or 44.6M --date DATE Download only videos uploaded on this date. The date can be "YYYYMMDD" or in the format [now|today|yesterday][-N[day|week|month|year]]. E.g. "--date today-2weeks" downloads only videos uploaded on the same day two weeks ago --datebefore DATE Download only videos uploaded on or before this date. The date formats accepted are the same as --date --dateafter DATE Download only videos uploaded on or after this date. The date formats accepted are the same as --date --match-filters FILTER Generic video filter. Any "OUTPUT TEMPLATE" field can be compared with a number or a string using the operators defined in "Filtering Formats". You can also simply specify a field to match if the field is present, use "!field" to check if the field is not present, and "&" to check multiple conditions. Use a "" to escape "&" or quotes if needed. If used multiple times, the filter matches if at least one of the conditions is met. E.g. --match-filters !is_live --match-filters "like_count>?100 & description~='(?i)bcats & dogsb'" matches only videos that are not live OR those that have a like count more than 100 (or the like field is not available) and also has a description that contains the phrase "cats & dogs" (caseless). Use "--match-filters -" to interactively ask whether to download each video --no-match-filters Do not use any --match-filters (default) --break-match-filters FILTER Same as "--match-filters" but stops the download process when a video is rejected --no-break-match-filters Do not use any --break-match-filters (default) --no-playlist Download only the video, if the URL refers to a video and a playlist --yes-playlist Download the playlist, if the URL refers to a video and a playlist --age-limit YEARS Download only videos suitable for the given age --download-archive FILE Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it --no-download-archive Do not use archive file (default) --max-downloads NUMBER Abort after downloading NUMBER files --break-on-existing Stop the download process when encountering a file that is in the archive --no-break-on-existing Do not stop the download process when encountering a file that is in the archive (default) --break-per-input Alters --max-downloads, --break-on-existing, --break-match-filters, and autonumber to reset per input URL --no-break-per-input --break-on-existing and similar options terminates the entire download queue --skip-playlist-after-errors N Number of allowed failures until the rest of the playlist is skipped
-N, --concurrent-fragments N Number of fragments of a dash/hlsnative video that should be downloaded concurrently (default is 1) -r,&n