비디오 다운로드 (yt-dlp)은(는) 무엇을 하나요?
YouTube와 약 1,800개의 다른 사이트에서 비디오 또는 오디오를 다운로드합니다.
사용자 자신의 용도로만 다운로드하세요. 타인의 저작권이 있는 저작물을 재배포하는 데 도움을 주지 마십시오.
기본값
- 저장 위치: 비디오는
~/Movies, 오디오는~/Music(사용자가 다른 폴더를 지정하지 않은 경우). Linux에서는~/Videos를 사용하십시오. - 포맷: 다른 요청이 없으면 H.264 비디오와 AAC 오디오가 포함된 MP4. QuickTime, Final Cut, Premiere 및 iOS에서 변환 없이 재생할 수 있습니다. AV1 및 VP9 파일은 훨씬 작지만 QuickTime Player에서 열리지 않는 경우가 많습니다.
- 해상도: 지정되지 않은 경우 1080p.
- 추가 사항: 메타데이터, 썸네일 및 챕터를 포함합니다.
사전 점검
yt-dlp --version # 오래된 버전은 YouTube 오류의 가장 흔한 원인입니다
ffmpeg -version | head -1 # 실제로 실행 가능해야 하며, 존재만으로는 안 됩니다
ffprobe -version | head -1 # yt-dlp에도 필요하며, 종종 누락되는 부분입니다
which ffmpeg로 확인하지 마십시오. 이는 PATH에서 첫 번째 일치 항목만 보고하며, 잘못된 바이너리일 수 있습니다. Apple Silicon Mac에서는 /usr/local/bin에 남아 있는 Intel 빌드가 /opt/homebrew/bin의 Homebrew 빌드보다 먼저 올 수 있습니다. 그러면 yt-dlp가 모든 것을 다운로드한 후 병합 단계에서 bad CPU type in executable 또는 ffmpeg not found 오류와 함께 실패하고, 여전히 종료 코드 0으로 종료됩니다. 따라서 종료 코드를 신뢰하지 말고 출력에서 ERROR를 확인하십시오.
Apple Silicon에서는 올바른 경로를 명시적으로 전달하십시오:
yt-dlp --ffmpeg-location /opt/homebrew/bin ...
병합이 실패하면 분리된 비디오 및 오디오 파일(.fNNN)이 디스크에 남습니다. 남은 스트림 병합에 설명된 대로 ffmpeg를 사용하여 다시 다운로드할 필요 없이 결합하십시오.
시작하기 전에 다운로드할 내용을 확인하십시오:
yt-dlp --print "%(title)s | %(duration_string)s | %(uploader)s" "URL"
yt-dlp -F "URL" # 사용 가능한 모든 포맷
df -h ~/Movies | tail -1 # 여유 공간
약 1GB 이상인 것은 시작하기 전에 사용자에게 제목, 길이 및 대략적인 크기를 알려주십시오.
메인 명령어
cd ~/Movies && yt-dlp \
-f "bv*[height<=1080][vcodec^=avc1]+ba[ext=m4a]/bv*[height<=1080]+ba/b[height<=1080]" \
--merge-output-format mp4 \
--embed-metadata --embed-thumbnail --embed-chapters \
-o "%(title)s [%(id)s].%(ext)s" \
--newline \
"URL"
Apple Silicon Mac에서는 --ffmpeg-location /opt/homebrew/bin을 추가하십시오.
포맷 문자열은 왼쪽에서 오른쪽으로 시도되는 폴백 목록입니다:
bv*[height<=1080][vcodec^=avc1]+ba[ext=m4a]: 최대 1080p의 최고 H.264 비디오와 최고 M4A 오디오. 가장 호환성이 좋은 옵션입니다.bv*[height<=1080]+ba: 해당 높이에 H.264가 없는 사이트를 위한 모든 코덱.b[height<=1080]: 비디오와 오디오가 이미 결합된 단일 파일. 별도로 제공하지 않는 사이트용입니다.
다른 해상도를 위해 1080을 720, 1440 또는 2160으로 변경하거나, 사용 가능한 최고 해상도를 위해 높이 필터를 제거하십시오.
--newline은 각 진행 업데이트를 자체 줄에 출력하여 로그를 읽기 쉽게 만듭니다.
파일 이름의 [%(id)s]는 동일한 제목의 재업로드가 서로를 덮어쓰는 것을 방지하고 파일 출처를 기록합니다. 제목의 슬래시나 이모지가 문제를 일으키면 --restrict-filenames를 추가하십시오.
긴 다운로드
수백 MB가 넘는 것은 백그라운드에서 실행하고, 사용자에게 기다리게 하지 말고 제목과 예상 크기를 알려주십시오.
백그라운드 다운로드를 tail 또는 head로 파이프하지 마십시오. 출력을 버퍼링하여 다운로드가 끝날 때까지 로그가 비어 있습니다. 진행 상황을 확인하려면 -F의 크기와 증가하는 .part 파일을 비교하십시오:
ls -la ~/Movies/*.part
중단된 다운로드를 재개하려면 동일한 명령어를 다시 실행하십시오. yt-dlp가 .part 파일부터 계속 진행합니다.
변형
오디오 전용 (MP3):
cd ~/Music && yt-dlp -x --audio-format mp3 --audio-quality 0 \
--embed-metadata --embed-thumbnail -o "%(title)s.%(ext)s" "URL"
YouTube의 원본 AAC 오디오를 유지하려면 --audio-format m4a를 사용하십시오. 더 빠르고 재인코딩으로 인한 품질 손실이 없습니다.
모든 코덱에서 최고 품질:
yt-dlp -f "bv*+ba/b" --merge-output-format mkv "URL"
MKV는 모든 코덱 조합을 담을 수 있습니다. QuickTime에서 열리지 않을 수 있다고 사용자에게 경고하십시오.
자막:
yt-dlp --write-subs --write-auto-subs --sub-langs "en.*" --embed-subs "URL"
--write-auto-subs는 YouTube의 자동 캡션을 포함합니다. 대본만 얻으려면 --skip-download를 추가하십시오.
비디오의 일부:
yt-dlp --download-sections "*00:10:00-00:15:30" "URL"
재생 목록 또는 채널:
yt-dlp -o "%(playlist)s/%(playlist_index)03d - %(title)s.%(ext)s" "URL"
재생 목록의 일부를 다운로드하려면 --playlist-items 1-10을 추가하십시오. 나중에 업데이트할 항목의 경우 --download-archive archive.txt를 추가하여 다시 실행할 때 이미 다운로드된 항목을 건너뛰도록 하십시오.
드라이 런: --simulate는 아무것도 다운로드하지 않고 형식과 파일 이름을 계산합니다.
남은 스트림 병합
병합 단계가 실패한 경우 다시 다운로드하지 않고 분리된 파일을 결합하십시오:
ffmpeg -i "NAME.f137.mp4" -i "NAME.f140.m4a" -c copy -movflags +faststart "NAME.mp4"
-c copy는 스트림을 재인코딩 없이 결합하므로 빠르고 품질 손실이 없습니다. +faststart는 파일의 시작 부분으로 인덱스를 이동하여 파일이 완전히 로드되기 전에 재생할 수 있도록 합니다. 결과물이 재생되면 .fNNN 파일을 삭제하십시오.
문제 해결
| 문제 | 해결 방법 |
|---|---|
Requested format is not available | -F를 실행하고 실제 목록에서 선택하십시오. 사이트가 해당 해상도나 코덱을 제공하지 않을 수 있습니다. |
| HTTP 403, "unable to extract" 또는 서명 오류 | yt-dlp가 오래되었습니다. 업데이트하십시오 (brew upgrade yt-dlp 또는 pip install -U yt-dlp). YouTube 오류 시 가장 먼저 확인하십시오. |
| "Sign in to confirm you're not a bot" | --cookies-from-browser chrome (또는 safari, firefox)를 추가하십시오. 브라우저를 먼저 종료하십시오. Chrome은 쿠키 데이터베이스를 잠급니다. |
전체 다운로드 후 ffmpeg not found | ffmpeg가 없거나 잘못된 아키텍처입니다. 사전 점검을 확인한 후, 다시 다운로드하지 말고 남은 파일을 병합하십시오. |
bad CPU type in executable | Intel 바이너리가 Apple Silicon 바이너리 대신 사용되고 있습니다. --ffmpeg-location /opt/homebrew/bin을 전달하십시오. |
| 병합 실패 또는 오디오 없음 | ffmpeg가 너무 오래되었거나 ffprobe가 없습니다. ffmpeg를 재설치하십시오. |
| 다운로드 속도가 매우 느림 | --concurrent-fragments 4를 추가하십시오. |
| 연령 제한 또는 비공개 비디오 | 로그인된 브라우저와 함께 --cookies-from-browser를 사용하십시오. |