본문으로 건너뛰기
yt-dlp

Bilibili용 yt-dlp 명령어 생성기

Bilibili용 yt-dlp 명령어를 만듭니다. 403 오류를 대부분 피하게 해 주는 브라우저 위장부터 시작합니다.

선택 사항입니다. 비워 두면 명령어가 URL 로 끝나므로 나중에 직접 채우면 됩니다.

만들어진 명령어

yt-dlp -f 'bv*[height<=1080]+ba/b[height<=1080]' --merge-output-format mp4 --no-playlist --impersonate chrome --cookies-from-browser chrome https://www.bilibili.com/video/BV1xx411c7mD
기본

오디오만 고르면 소리 트랙만 뽑고 영상은 버립니다.

영상과 화질

높이 상한을 정합니다. yt-dlp는 그 상한 이하에서 가장 좋은 트랙을 고릅니다.

분리된 영상과 오디오 트랙을 병합해 담을 파일 형식입니다.

고급 옵션 (3)

화질 선택을 대체합니다. format 문법을 이미 아는 분을 위한 항목입니다.

재인코딩 없이 다시 포장만 합니다. 빠르고 손실이 없습니다.

영상을 다시 인코딩합니다. 느리고 손실이 있습니다 —— remux로 안 될 때만 쓰세요.

오디오

오디오를 변환할 대상 형식입니다.

VBR은 용량 대비 품질이 가장 좋고, 고정 bitrate는 용량을 예상하기 쉽습니다.

자막

삽입은 자막을 영상 안에 넣고, 저장은 옆에 별도의 .srt 파일을 만듭니다.

쉼표로 구분합니다. 사용 가능한 모든 언어를 원하면 all 이라고 쓰세요.

재생목록과 채널

URL이 영상과 재생목록에 동시에 속할 때 어떻게 할지 정합니다.

범위와 목록 모두 됩니다. 예를 들어 1-10,15, 또는 끝에서부터 하나씩 건너뛰는 -5::2.

고급 옵션 (1)

이미 내려받은 항목을 적어 두어 다시 실행할 때 건너뜁니다. 채널을 계속 동기화하는 방법이 바로 이것입니다.

구간과 챕터
고급 옵션 (2)

*00:01:30-00:03:00 같은 시간 범위, 또는 챕터 이름입니다. 앞의 별표는 시각이라는 뜻입니다.

메타데이터와 표지
고급 옵션 (3)
SponsorBlock

SponsorBlock 데이터를 바탕으로 커뮤니티가 표시한 구간을 파일에서 잘라냅니다.

고급 옵션 (1)

구간은 남기고 표시만 해서 직접 건너뛸 수 있게 합니다.

파일과 폴더

필드 이름은 %(...)s 안에 씁니다. 슬래시는 폴더를 만듭니다.

고급 옵션 (4)

파일을 저장할 위치입니다. 위 템플릿과 조합하면 하위 폴더도 만들 수 있습니다.

파일 이름의 최대 길이(문자 수)입니다.

필터
고급 옵션 (5)

YYYYMMDD, 또는 now-1month 같은 상대 날짜.

YYYYMMDD, 또는 상대 날짜.

이보다 작은 것은 건너뜁니다. 5M, 500K 같은 표기를 씁니다.

이보다 큰 것은 건너뜁니다.

멈추기 전까지 내려받을 파일 수입니다.

네트워크

예를 들어 2M 또는 500K. 남은 대역폭을 다른 일에 써야 할 때 유용합니다.

고급 옵션 (5)

조각으로 나뉜 트랙을 빠르게 합니다. 4 정도로 시작하면 무리가 없습니다.

실패한 조각을 몇 번 다시 시도할지. infinite 도 쓸 수 있습니다.

HTTP, HTTPS 또는 SOCKS proxy 주소입니다.

요청이 실제 브라우저에서 온 것처럼 보이게 합니다. 갑자기 403이 날 때 흔히 쓰는 해법입니다.

로그인과 cookies

로그인된 세션을 직접 읽습니다. 비공개, 연령 제한, 멤버 전용 콘텐츠에는 필요합니다.

고급 옵션 (1)

브라우저에서 내보낸 Netscape 형식 cookies.txt 파일입니다.

라이브 방송
고급 옵션 (2)

예정된 방송이 시작될 때까지 계속 확인합니다. MIN-MAX는 확인 간격(초)입니다.

우회 방법
고급 옵션 (3)

구식이며 --add-headers 로 대체되었습니다. 오래된 안내 글이 아직 많이 쓰기 때문에 남겨 두었습니다.

구식이며 --add-headers 로 대체되었습니다.

사이트별 전용 옵션입니다. 예를 들어 youtube:player_client=web.

출력과 디버그
고급 옵션 (2)
초기화

403 오류와 화질 제한

Bilibili는 브라우저에서 온 것처럼 보이지 않는 요청을 거부하기 때문에 평범한 명령어는 자주 403을 돌려줍니다. 이 프리셋에서 위장을 기본으로 켜 둔 것은 대부분의 경우 그것이 해법이기 때문입니다.

1080p 이상은 보통 로그인된, 때로는 유료 계정에만 열려 있으므로 여기서는 cookies가 접근뿐 아니라 화질에도 관계합니다. 여러 파트로 나뉜 영상은 재생목록 항목으로 나타납니다.

Bilibili는 낡은 yt-dlp가 가장 빨리 망가지는 플랫폼입니다 —— 사이트는 서구 어느 플랫폼보다 자주 API를 다시 만들고, extractor 갱신은 각 변경의 며칠 안에 yt-dlp 릴리스로 도착합니다. 지난달까지 되던 내려받기가 실패하기 시작하면, 먼저 yt-dlp -U 로 갱신하세요. 위장 (이 프리셋에서는 기본 켜짐)은 403 문제 중 "브라우저다운 헤더" 부분을 맡고, 나머지는 대개 세션이 없거나 만료된 것입니다.

여러 파트로 나뉜 업로드 —— 시리즈에서 흔한 P1/P2/P3 구조 —— 는 재생목록 항목으로 도착하므로, 재생목록 전체 처리가 모든 파트를 가져오고, 출력 템플릿의 재생목록 번호가 파트 순서를 지킵니다. 탄막 (흐르는 댓글)은 yt-dlp에게 자막 트랙입니다. --write-subs 는 그것을 .ass 파일로 저장하고, 이 데이터가 존재하는 유일한 형식이 그것입니다. 필요 없다면 아무것도 하지 마세요 —— 청하지 않는 한 병합되지 않습니다.

인터랙션 화질 —— "돌비"와 프리미엄 단계 —— 는 그것을 보유한 계정에만 존재하고, 그런 계정의 cookies 없이는 어떤 플래그도 닿지 않습니다. 지역 잠금이 다른 벽입니다. 일부 업로드는 중국 본토에서만 보이고, 차단이 페이지가 아니라 CDN에서 걸릴 때는 지역 안의 proxy만이 길입니다. 지역 우회는 페이지 단계의 차단에는 때때로 통하지만, CDN 쪽에는 결코 통하지 않습니다.

Bilibili는 높은 화질을 오디오가 분리된 DASH로 제공하므로, ffmpeg 병합은 YouTube와 똑같습니다 —— 병합 단계는 이 프리셋에 이미 들어 있습니다. -x 로 오디오만 뽑는 것도 동작하고, 긴 여러 파트 업로드에서 소리만 취하는 가장 빠른 길입니다. 라이브 리플레이는 방송이 끝나면 평범한 VOD가 되므로, 어느 영상과 같이 내려받으면 됩니다. 이 사이트의 라이브 녹화 옵션은 방송이 진행 중인 동안을 위한 것입니다.

자주 묻는 질문

Bilibili가 403을 돌려주는 이유는?
Bilibili는 브라우저에서 온 것처럼 보이지 않는 요청을 거부합니다. --impersonate chrome 이 대부분 해결해 줍니다. 멤버 전용 콘텐츠라면 cookies도 더하세요.
Bilibili에서 1080p 이상을 받으려면?
더 높은 해상도는 로그인된, 때로는 유료 계정에만 열려 있습니다. 그런 계정으로 --cookies-from-browser 를 쓰세요.
여러 파트로 나뉜 영상의 모든 파트를 받으려면?
재생목록 처리를 재생목록 전체로 두세요 —— 각 파트가 재생목록 항목으로 나타납니다.