기본 내려받기
옵션을 하나도 주지 않으면 yt-dlp는 병합할 수 있는 최선의 조합을 골라 제목으로 파일 이름을 붙입니다. 의외로 자주, 이것이 바로 맞는 명령어입니다.
yt-dlp URL
큰 것을 내려받기 전에 실제로 무엇이 제공되는지 보는 편이 낫습니다. 이 명령어는 포맷 표를 출력하고 아무것도 받지 않은 채 종료합니다.
yt-dlp -F URL
그 표의 왼쪽 열이 포맷 id이고, 이후 직접 지정할 수 있습니다. 두 id를 +로 이으면 "둘 다 받아서 병합하라"는 뜻입니다.
yt-dlp -f 137+140 URL
화질과 포맷 선택
하드코딩한 포맷 id는 사이트가 인코딩 단계를 바꾸는 순간 깨집니다. 셀렉터 표현식이 오래가는 방식입니다. 원하는 속성을 말하고, 가장 잘 맞는 것을 찾는 일은 yt-dlp에 맡기세요.
yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" URL
이렇게 읽으면 됩니다. 높이가 1080 이하인 최선의 비디오 스트림에 최선의 오디오를 더하고, 그 조합이 없으면 높이가 1080 이하인 최선의 단일 파일. 슬래시 뒤의 이 대안이 바로 프로그레시브 스트림만 제공하는 사이트에서 명령어가 실패하지 않게 해 줍니다.
스트림 둘을 병합하면 yt-dlp가 컨테이너를 골라야 합니다. MP4는 어디서나 재생되고, MKV는 무엇이든 담아냅니다. 자막과 챕터가 끼어들기 시작하면 후자가 중요해집니다.
yt-dlp -f "bv*+ba" --merge-output-format mp4 URL
엄격한 상한이 아니라 선호를 표현하려면 거르는 대신 정렬하세요. 이렇게 하면 1080p와 MP4를 우선하되 둘 다 없을 때도 무언가는 받아 옵니다.
yt-dlp -S "res:1080,ext:mp4" URL
오디오와 MP3
오디오 추출에는 ffmpeg가 필요합니다. 갓 설치한 환경에서 아래 명령어가 실패하는 가장 흔한 이유가 바로 이것입니다.
yt-dlp -x --audio-format mp3 URL
앨범 아트와 태그를 넣는 데는 플래그 두 개면 충분하고, 그 덕분에 결과물이 이름 없는 파일 더미가 아니라 음악 라이브러리에서 쓸 만한 것이 됩니다.
yt-dlp -x --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata URL
--audio-quality 0은 "품질 0"이 아니라 가변 비트레이트의 최고 설정입니다. 고정 비트레이트가 필요하면 값을 지정하세요: --audio-quality 320K.
원본이 이미 AAC나 Opus라면 MP3로 바꾸는 것은 재인코딩이며 아무 대가 없이 품질만 잃습니다. 원본을 그대로 두는 편이 더 빠르고 더 좋습니다.
yt-dlp -x --audio-format best URL
자막
삽입된 자막은 파일과 함께 움직입니다. 별도의 .srt 파일은 편집하거나 다른 도구에 넘기기가 더 쉽습니다.
yt-dlp --embed-subs --sub-langs en URL yt-dlp --write-subs --sub-langs en,vi --convert-subs srt URL
자동 생성 자막은 별개의 스위치입니다. 그것 없이는 사람이 만든 자막이 없는 영상에서 아무것도 나오지 않고, 오류도 나지 않습니다.
yt-dlp --write-auto-subs --sub-langs en --convert-subs srt --skip-download URL
재생목록과 채널
YouTube URL은 영상과 재생목록 양쪽에 동시에 속하는 경우가 많아 yt-dlp가 어느 쪽을 뜻했는지 추측해야 합니다. 명시적으로 말해 주세요.
yt-dlp --no-playlist URL yt-dlp --yes-playlist URL
긴 작업에서는 아카이브 파일이 여기 있는 어떤 옵션보다도 중요합니다. 무엇을 이미 받았는지 기록해 두므로, 다시 실행하면 처음부터가 아니라 멈춘 지점부터 이어집니다.
yt-dlp --yes-playlist -i \ --download-archive archive.txt \ -o "%(playlist_index)02d - %(title)s.%(ext)s" \ URL
-i와 함께 쓰면 지역 제한이나 삭제된 영상 하나 때문에 나머지 이백 개가 중단되는 일이 없어집니다. 전부가 아니라 일부만 가져오려면 -I가 범위와 목록을 받습니다: -I 1:10, -I "1,3,7-10".
구간, 챕터, 스폰서 구간
영상 전체가 아니라 일부만 받을 수 있습니다. 앞의 별표는 챕터 이름이 아니라 타임스탬프라는 표시이며, 따옴표는 필수입니다. 맨 *는 bash가 여러분의 파일 이름에 대해 확장해 버립니다.
yt-dlp --download-sections "*00:01:30-00:03:00" URL
SponsorBlock은 커뮤니티가 제출한 마커를 이용해 구간을 통째로 잘라 내거나, 직접 건너뛸 수 있는 챕터로 남겨 둡니다.
yt-dlp --sponsorblock-remove default URL yt-dlp --sponsorblock-mark all --embed-chapters URL
파일 이름과 폴더
출력 템플릿이 둘 다 결정합니다. 슬래시는 디렉터리를 만들기 때문에 템플릿 하나로 보관함 전체 구조를 짤 수 있습니다.
yt-dlp -o "%(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s.%(ext)s" URL
제목에는 일부 파일 시스템이 거부하는 문자가 자주 들어 있습니다. --restrict-filenames는 모든 것을 평범한 ASCII로 낮추는데, 기기 사이를 오갈 파일이라면 그만한 값어치가 있습니다.
Windows의 .bat 파일에서는 모든 %를 두 번씩 써야 합니다. %%(title)s처럼요. 그러지 않으면 배치 해석기가 yt-dlp에 닿기 전에 템플릿을 먹어 버립니다. .bat를 내려받을 때는 생성기가 이 처리를 대신 해 둡니다.
실제로 마주치게 될 오류
ffmpeg not found
병합, 변환, 삽입, 잘라내기를 하는 모든 작업에는 PATH에 ffmpeg가 있어야 합니다. 설치한 뒤 ffmpeg -version으로 확인하세요.
Sign in to confirm you are not a bot
먼저 --impersonate chrome을, 그다음 --cookies-from-browser를 시도하세요. 둘 다 안 되면 yt-dlp를 갱신하세요. 이 확인 절차는 특히 자주 바뀌고 수정본은 대개 며칠 안에 새 릴리스로 나옵니다.
Unable to extract player response
거의 언제나 yt-dlp가 낡았을 뿐입니다. 다른 것을 건드리기 전에 먼저 갱신하세요: yt-dlp -U, 패키지 관리자로 설치했다면 그쪽으로.
Requested format is not available
셀렉터가 아무것도 찾지 못했습니다. -F로 무엇이 있는지 확인하고, 엄격한 필터보다 정렬(-S)을 택해 언제나 대안이 남게 하세요.
HTTP Error 403
그 URL은 다른 세션이나 다른 지역용으로 서명된 것입니다. 새 쿠키로 다시 실행하거나, --impersonate chrome을 더하거나, --geo-bypass를 시도해 보세요.
yt-dlp를 최신으로 유지하기
보고되는 문제 가운데 어떤 플래그보다도 갱신으로 해결되는 것이 더 많습니다. 독립 실행 파일로 설치했다면:
yt-dlp -U
패키지 관리자로 설치했다면 설치한 방식 그대로 갱신하세요. -U는 거부할 텐데, 그렇게 하는 것이 맞습니다.