Chuyển tới nội dung
yt-dlp

Trình tạo lệnh yt-dlp cho Bilibili

Tạo lệnh yt-dlp cho Bilibili, bật sẵn giả dạng trình duyệt để tránh phần lớn lỗi 403.

Không bắt buộc. Để trống thì câu lệnh kết thúc bằng URL để bạn tự điền.

Câu lệnh của bạn

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
Cơ bản

Chỉ âm thanh sẽ tách phần tiếng và bỏ luồng video.

Video và chất lượng

Giới hạn chiều cao. yt-dlp vẫn chọn luồng tốt nhất ở mức đó hoặc thấp hơn.

Loại file mà luồng video và âm thanh tách rời được merge vào.

Tuỳ chọn nâng cao (3)

Ghi đè mục chọn chất lượng. Dành cho người đã biết cú pháp format.

Đóng gói lại các luồng mà không encode lại. Nhanh và không mất chất lượng.

Encode lại video. Chậm và giảm chất lượng — chỉ dùng khi remux không được.

Âm thanh

Định dạng mà âm thanh được chuyển sang.

VBR cho tỉ lệ dung lượng trên chất lượng tốt nhất; bitrate cố định thì dễ đoán hơn.

Phụ đề

Nhúng là đặt phụ đề vào trong video; lưu là ghi ra một file .srt riêng bên cạnh.

Cách nhau bằng dấu phẩy. Dùng all để lấy mọi ngôn ngữ có sẵn.

Playlist và kênh

Làm gì khi URL thuộc cả một video lẫn một playlist.

Dùng được cả khoảng và danh sách, ví dụ 1-10,15 hoặc -5::2 để lấy cách một mục tính từ cuối.

Tuỳ chọn nâng cao (1)

Ghi lại những gì đã tải nên chạy lại sẽ bỏ qua chúng. Đây là cách giữ một kênh luôn đồng bộ.

Cắt đoạn và chương
Tuỳ chọn nâng cao (2)

Một khoảng thời gian như *00:01:30-00:03:00, hoặc tên chương. Dấu hoa thị đứng đầu nghĩa là đây là mốc thời gian.

Metadata và ảnh bìa
Tuỳ chọn nâng cao (3)
SponsorBlock

Cắt hẳn các đoạn do cộng đồng đánh dấu ra khỏi file, dựa trên dữ liệu SponsorBlock.

Tuỳ chọn nâng cao (1)

Giữ lại các đoạn nhưng đánh dấu chúng để bạn tự bỏ qua.

Tệp và thư mục

Tên trường đặt trong %(...)s. Dấu gạch chéo sẽ tạo thư mục.

Tuỳ chọn nâng cao (4)

Nơi ghi file. Kết hợp với mẫu tên file ở trên để tạo thư mục con.

Độ dài tên file tối đa, tính theo ký tự.

Bộ lọc
Tuỳ chọn nâng cao (5)

Dạng YYYYMMDD, hoặc ngày tương đối như now-1month.

Dạng YYYYMMDD, hoặc ngày tương đối.

Bỏ qua file nhỏ hơn mức này. Nhận dạng 5M, 500K và tương tự.

Bỏ qua file lớn hơn mức này.

Số file cần tải trước khi dừng lại.

Mạng

Ví dụ 2M hoặc 500K. Hữu ích khi bạn cần để dành băng thông cho việc khác.

Tuỳ chọn nâng cao (5)

Tăng tốc các luồng chia fragment. Bắt đầu với 4 là hợp lý.

Thử lại bao nhiêu lần khi một phần bị lỗi. Dùng được cả infinite.

URL proxy dạng HTTP, HTTPS hoặc SOCKS.

Làm request giống một trình duyệt thật. Đây là cách sửa thường dùng khi đột nhiên bị lỗi 403.

Đăng nhập và cookies

Đọc trực tiếp phiên đăng nhập của bạn. Cần cho nội dung riêng tư, giới hạn tuổi hoặc chỉ dành cho thành viên.

Tuỳ chọn nâng cao (1)

Một file cookies.txt định dạng Netscape xuất ra từ trình duyệt của bạn.

Phát trực tiếp
Tuỳ chọn nâng cao (2)

Kiểm tra liên tục cho tới khi buổi phát đã hẹn bắt đầu. MIN-MAX là số giây giữa các lần kiểm tra.

Xử lý lỗi
Tuỳ chọn nâng cao (3)

Đã lỗi thời, thay bằng --add-headers. Vẫn giữ vì rất nhiều hướng dẫn cũ còn dùng nó.

Đã lỗi thời, thay bằng --add-headers.

Các tuỳ chọn riêng theo từng trang, ví dụ youtube:player_client=web.

Kết quả và gỡ lỗi
Tuỳ chọn nâng cao (2)
Đặt lại

Lỗi 403 và giới hạn chất lượng

Bilibili từ chối những request không giống trình duyệt, nên một câu lệnh thông thường hay trả về 403. Giả dạng trình duyệt được bật sẵn trong preset này vì đó là cách sửa hiệu quả trong phần lớn trường hợp.

1080p trở lên thường chỉ dành cho tài khoản đã đăng nhập hoặc tài khoản trả phí, nên ở đây cookies quan trọng cho cả chất lượng chứ không chỉ để truy cập. Video nhiều phần xuất hiện dưới dạng các mục của playlist.

Bilibili là nền tảng khiến một bản yt-dlp cũ gãy nhanh nhất — trang này làm lại API của mình thường hơn bất kỳ nền tảng phương Tây nào, và bản cập nhật extractor đến trong bản phát hành yt-dlp chỉ sau vài ngày kể từ mỗi thay đổi. Khi một lượt tải tháng trước vẫn chạy mà bắt đầu thất bại, hãy update trước: yt-dlp -U. Giả dạng trình duyệt (bật sẵn trong preset này) xử lý phần header-phải-như-trình-duyệt của vấn đề 403; phần còn lại thường là một phiên thiếu hoặc đã hết hạn.

Video nhiều phần — cấu trúc P1/P2/P3 quen thuộc của các bộ series — đến dưới dạng các mục playlist, nên xử lý toàn bộ playlist sẽ lấy đủ mọi phần, và số thứ tự playlist trong mẫu tên file giữ các phần đúng thứ tự. Danmaku (các bình luận chạy ngang) là một track phụ đề đối với yt-dlp: --write-subs lưu chúng thành file .ass, định dạng duy nhất mà chúng tồn tại. Nếu không muốn, đừng làm gì — chúng không được merge trừ khi bạn yêu cầu.

Các mức chất lượng tương tác — thang "dolby" và premium — chỉ tồn tại với những tài khoản đang nắm giữ chúng, và không cờ nào với tới được nếu thiếu cookies từ một tài khoản như vậy. Nội dung khoá vùng là bức tường còn lại: một số video chỉ nhìn thấy được từ đại lục Trung Quốc, và proxy đặt đúng vùng là con đường duy nhất khi việc chặn được thực thi ở tầng CDN chứ không phải ở trang. Vượt chặn vùng đôi khi hiệu quả với chặn ở cấp trang, nhưng chưa bao giờ với tầng CDN.

Bilibili phục vụ các mức chất lượng cao của nó dưới dạng DASH với audio tách riêng, nên ffmpeg merge y hệt như YouTube — bước merge đã có sẵn trong preset này. Tách chỉ-lấy-audio bằng -x hoạt động bình thường và là cách nhanh nhất để lấy riêng tiếng từ một video nhiều phần dài. Với bản phát lại live, bản phát lại trở thành VOD thường sau khi stream kết thúc, nên cứ tải nó như mọi video khác; các tuỳ chọn ghi trực tiếp trên trang này dành cho stream khi nó đang diễn ra.

Câu hỏi thường gặp

Vì sao Bilibili trả về 403?
Bilibili từ chối những request không giống trình duyệt. --impersonate chrome xử lý được phần lớn trường hợp; thêm cookies cho nội dung chỉ dành cho thành viên.
Tải 1080p trở lên từ Bilibili thế nào?
Các độ phân giải cao hơn được dành cho tài khoản đã đăng nhập và đôi khi là tài khoản trả phí. Hãy dùng --cookies-from-browser với một tài khoản như vậy.
Lấy hết các phần của một video nhiều phần thế nào?
Đặt xử lý playlist thành toàn bộ playlist — các phần được đưa ra dưới dạng mục của playlist.