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

Ghi luồng trực tiếp — Trình tạo lệnh yt-dlp

Tạo lệnh yt-dlp để ghi một luồng trực tiếp, ghi từ đầu buổi phát khi nền tảng còn cho phép.

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 --merge-output-format mkv --no-playlist -N 4 --live-from-start --wait-for-video 60-300 'https://www.youtube.com/watch?v=live_stream_id'
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

Ghi trực tiếp cho an toàn

Ghi-từ-đầu lấy lại từ lúc buổi phát bắt đầu chứ không phải từ lúc bạn chạy câu lệnh, với điều kiện nền tảng còn giữ phần trước đó. Chờ-buổi-phát sẽ kiểm tra liên tục và bắt đầu ngay khi luồng lên sóng.

Hãy chọn MKV. Một bản ghi bị dừng bất ngờ — và ghi trực tiếp thì hay bị — thường vẫn để lại file MKV phát được, còn MP4 bị cắt giữa lúc ghi thì thường không mở được. Không có cách tải tiếp một luồng trực tiếp, nên lựa chọn container chính là toàn bộ lớp bảo hiểm.

Chờ một buổi phát đã lên lịch là một chế độ khác với ghi một buổi đang diễn ra: wait-for-video thăm dò URL cho tới khi luồng mở ra, rồi bắt đầu ghi — cứ để terminal chạy và nó ghi lại từ phút đầu tiên. Khoảng cách giữa các lần thăm dò tính bằng phút, không phải giây, nên hãy khởi động câu lệnh sớm; đến muộn một nhịp thăm dò là mất mấy phút stream, và không tuỳ chọn nào lấy lại được những phút chưa từng được ghi.

Ghi-từ-đầu có ranh giới theo từng nền tảng: YouTube giữ phần đầu một luồng và phục vụ theo yêu cầu, nên tuỳ chọn này thật sự với tới được; Twitch cũng vậy trong phạm vi thời gian lưu giữ của nó. Các nền tảng khác không giữ lại gì trước khoảnh khắc bạn tham gia. Vì vậy tuỳ chọn này không phải công tắc thần kỳ — nó lấy thứ nền tảng đã lưu, và các nền tảng khác nhau ở thứ chúng lưu. Nếu nền tảng có bản phát lại sau đó, bản phát lại là nguồn tốt hơn mọi bản ghi trực tiếp.

Luồng trực tiếp vốn là HLS: hàng trăm segment ngắn đến theo thời gian thực, được ffmpeg ghép vào container ngay khi chúng về tới. Đó là lý do ghi trực tiếp là trường hợp mà MKV quan trọng nhất — MP4 cần chỉ mục của nó được ghi ở cuối, còn một bản ghi bị giết ở phút thứ ba của một stream hai tiếng thì không có chỉ mục nào cả. Dung lượng đĩa là giới hạn thực còn lại: một bản ghi trực tiếp phình ra đúng tốc độ bitrate của stream suốt thời gian nó chạy, và giới hạn dung lượng bảo vệ đĩa khi một stream chạy mười hai tiếng vì người phát quên bấm dừng.

Sau sự việc, có hai điều xứng đáng được nói rõ. Một bản ghi có quãng lặng chết là chuyện bình thường — sự im lặng giữa các đoạn của sự kiện nằm sẵn trong nguồn — và cắt nó đi sau đó là một phép dựng phim, không phải một lượt tải thất bại. Còn những stream kết thúc từ vài tiếng trước, đến lúc bạn tìm thấy thì chúng đã là VOD thường: hãy dùng các tuỳ chọn video bình thường của nền tảng — chính là những thứ form này hiển thị theo mặc định — còn các tuỳ chọn riêng cho trực tiếp chỉ khi stream thật sự đang chạy.

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

Ghi một luồng trực tiếp từ đầu được không?
Hãy bật ghi-từ-đầu. Nó chỉ hoạt động khi nền tảng còn giữ phần trước đó của buổi phát.
Ghi một buổi phát chưa bắt đầu thế nào?
Dùng chờ-buổi-phát với khoảng MIN-MAX. yt-dlp sẽ kiểm tra liên tục và bắt đầu ngay khi luồng lên sóng.
Container nào tốt nhất cho ghi trực tiếp?
MKV. Nó chịu được việc bị ngắt giữa lúc ghi, còn MP4 bị cắt giữa lúc ghi thì có thể không phát được.
Nếu bản ghi của tôi bị ngắt thì sao?
Với MKV, bạn thường giữ được toàn bộ phần đã ghi. Không có cách tải tiếp một luồng trực tiếp — phần bị thiếu là mất hẳn.