Tải xuống mọi thứ từ video YouTube bằng youtube-dl


16

Tôi muốn tải xuống mọi thứ (phụ đề, thẻ, thẻ, chú thích, hình thu nhỏ, v.v. (và rõ ràng là video w / audio)) từ một video YouTube (ví dụ: video này ).

Tôi đang sử dụng youtube-dlvà, với số lượng công tắc lớn để sử dụng, tôi dường như không thể tìm thấy bất cứ điều gì phù hợp với nhu cầu của mình. Tôi cũng muốn tải xuống video / âm thanh với chất lượng cao nhất có thể, không giảm chất lượng. Mặc dù đó không phải là YouTube, tôi cũng muốn tải xuống một số khóa học udemy mà tôi đã mua để tôi có thể xem chúng trong khi tôi đang đi trên một con đường dài.

Tôi đã ffmpegcài đặt và tôi nghe nói rằng bạn cần điều này để tải xuống từ YouTube, nhưng tôi không chắc làm thế nào để liên kết nó với youtube-dl.

Đây là lần đầu tiên tôi sử dụng youtube-dl, vì vậy bất kỳ trợ giúp đều được đánh giá cao.

Câu trả lời:


14

Các tùy chọn liên quan bạn cần:

# Filesystem
--write-annotations
--write-description
--write-info-json

# Thumbnail images
--write-all-thumbnails

# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv

# Subtitle
--all-subs
--write-auto-sub
--write-sub

# Post-processing
--add-metadata
--embed-subs

Sao chép nó vào tập tin cấu hình của bạn (hoặc /etc/youtube-dl.confhoặc ~/.config/youtube-dl/config).

Sử dụng cấu hình đó, tôi đã tải xuống video nàyyoutube-dlviết các tệp sau:

$ ls
The Problem with Time & Timezones - Computerphile.annotations.xml
The Problem with Time & Timezones - Computerphile.description
The Problem with Time & Timezones - Computerphile.info.json
The Problem with Time & Timezones - Computerphile.jpg
The Problem with Time & Timezones - Computerphile.mkv

Tôi không thể đăng mediainfođầu ra ở đây vì nó vượt quá giới hạn ký tự, nhưng bạn có thể thấy nó trong github .


Tôi cũng muốn tải xuống video / âm thanh với chất lượng cao nhất có thể, không giảm chất lượng.

youtube-dltải xuống video với chất lượng cao nhất có thể theo mặc định, nhưng bạn có thể buộc hành vi này sử dụng --format bestvideo+bestaudio/best.


Mặc dù đó không phải là YouTube, tôi cũng muốn tải xuống một số khóa học udemy mà tôi đã mua để tôi có thể xem chúng trong khi tôi đang trên một chuyến đi đường dài.

Vui lòng đọc bài viết Tôi có thể tải một khóa học về máy tính của tôi không? :

Theo mặc định, các khóa học hoàn chỉnh không thể tải xuống từ máy tính. Chúng tôi làm điều này vì lo ngại cho vi phạm bản quyền.

Xin lưu ý rằng bạn luôn có thể lưu các khóa học để xem ngoại tuyến trên ứng dụng di động Udemy . Để biết thông tin về cách tải xuống các bài giảng video về thiết bị di động iOS của bạn, vui lòng bấm vào đây . Để biết các bước về cách tải xuống video để xem ngoại tuyến trên thiết bị Android, nhấp vào đây .


Tôi đã ffmpegcài đặt và tôi nghe nói rằng bạn cần điều này để tải xuống từ YouTube, nhưng tôi không chắc làm thế nào để liên kết nó với youtube-dl.

youtube-dlsử dụng avconvtheo mặc định, nhưng --prefer-ffmpegcho phép bạn sử dụng ffmpegthay thế. Dù sao, tùy chọn này không cần thiết cho " tải xuống không mất dữ liệu ". Trong ví dụ tôi cung cấp, youtube-dlchỉ được sử dụng ffmpegđể hợp nhất tất cả các định dạng đã tải xuống vào một tệp mkv duy nhất.


Điều này có nhúng thông tin từ YouTube vào video không? Tôi không thực sự muốn điều đó, tôi chỉ muốn nó tải xuống, nhưng hãy giữ tất cả trong các tệp riêng biệt, giống như giao diện của nó :)
leetbacoon

Và .mkv có phải là bộ chứa mặc định cho các video lossless sử dụng youtube-dlkhông?
leetbacoon

Oh, và làm thế nào bạn tải xuống video? youtube-dl [youtube-link]?
leetbacoon

1
@leetbacoon Tôi thấy. Tôi sẽ thêm một báo cáo lỗi.
nxnev

1
@leetbacoon Quay lại khi tôi viết câu trả lời này thì ngược lại, youtube-dlsẽ không thể tải xuống một số video nhất định nếu --youtube-skip-dash-manifestkhông có tùy chọn này. Chỉ cần chỉnh sửa ra tùy chọn đó, cảm ơn đã cho tôi biết.
nxnev

6

Để chỉ cần tải xuống video, bạn có thể sử dụng điều này:

youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"

Để chọn chất lượng video, trước tiên bạn nên sử dụng tùy chọn -F để liệt kê các định dạng có sẵn.

youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"

Và đây là đầu ra cho video của bạn:

[youtube] KYBok-XGsKM: Downloading webpage
[youtube] KYBok-XGsKM: Downloading video info webpage
[youtube] KYBok-XGsKM: Extracting video information
WARNING: unable to extract uploader nickname
[info] Available formats for KYBok-XGsKM:
format code  extension  resolution note
249          webm       audio only DASH audio   52k , opus @ 50k,  4.19MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 5.42MiB
140          m4a        audio only DASH audio  129k , m4a_dash container, mp4a.40.2@128k, 10.59MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 7.66MiB
251          webm       audio only DASH audio  135k , opus @160k, 9.58MiB
278          webm       256x144    144p   98k , webm container, vp9, 30fps, video only, 6.59MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 15fps, video only, 9.04MiB
242          webm       426x240    240p  205k , vp9, 30fps, video only, 11.47MiB
133          mp4        426x240    240p  265k , avc1.4d4015, 30fps, video only, 20.11MiB
243          webm       640x360    360p  362k , vp9, 30fps, video only, 21.93MiB
134          mp4        640x360    360p  602k , avc1.4d401e, 30fps, video only, 20.42MiB
244          webm       854x480    480p  662k , vp9, 30fps, video only, 37.82MiB
135          mp4        854x480    480p 1020k , avc1.4d401f, 30fps, video only, 42.62MiB
247          webm       1280x720   720p 1353k , vp9, 30fps, video only, 81.53MiB
136          mp4        1280x720   720p 2013k , avc1.4d401f, 30fps, video only, 84.69MiB
137          mp4        1920x1080  1080p 2438k , avc1.640028, 30fps, video only, 157.71MiB
248          webm       1920x1080  1080p 2593k , vp9, 30fps, video only, 162.48MiB
264          mp4        2560x1440  1440p 6973k , avc1.640032, 30fps, video only, 459.58MiB
271          webm       2560x1440  1440p 7523k , vp9, 30fps, video only, 485.66MiB
313          webm       3840x2160  2160p 19991k , vp9, 30fps, video only, 1.34GiB
36           3gp        320x?      small , mp4v.20.3,  mp4a.40.2
17           3gp        176x144    small , mp4v.20.3,  mp4a.40.2@ 24k
43           webm       640x360    medium , vp8.0,  vorbis@128k
18           mp4        640x360    medium , avc1.42001E,  mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F,  mp4a.40.2@192k (best)

Dưới đây là một số tùy chọn hữu ích cho phụ đề:

   --write-sub
          Write subtitle file

   --write-auto-sub
          Write automatically generated subtitle file (YouTube only)

   --all-subs
          Download all the available subtitles of the video

   --list-subs
          List all available subtitles for the video

Và cho hình thu nhỏ:

   --write-thumbnail
          Write thumbnail image to disk

   --write-all-thumbnails
          Write all thumbnail image formats to disk

   --list-thumbnails
          Simulate and list all available thumbnail formats

Bạn cũng có thể tìm thêm thông tin về chất lượng video tại đây


4
Bạn hy vọng đạt được gì với lựa chọn định dạng thủ công? youtube-dlsử dụng các định dạng video và âm thanh tốt nhất theo mặc định. Nếu bạn muốn ghi đè một cài đặt khác trong tệp cấu hình, bạn có thể sử dụng -f bestvideo+bestaudio/best(giống với mặc định) hoặc bỏ qua tệp cấu hình ( --ignore-config).
David Foerster

Đừng trích dẫn tôi về điều này, nhưng tôi nghĩ rằng tôi đã đọc trước đó để có được video w / audio lossless, bạn chỉ cần sử dụngyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon

Và chỉ tự hỏi, tại sao một bản sao 1080p được coi là tốt nhất nếu 1440p có sẵn? Và tại sao 2160p được hiển thị? Tùy chọn đó không xuất hiện vào cuối của tôi (nó giới hạn ở 1440p)
leetbacoon

3

@leetbacoon xem phản hồi bình luận ở dưới cùng. (rep thấp vẫn còn sry)

Lưu ý: Tôi sẽ sử dụng tên chuyển đổi dài hơn để tránh nhầm lẫn. Nhiều thiết bị chuyển mạch được sử dụng có phiên bản ngắn hơn. Xem Tài liệu: Tùy chọn .

Lưu ý: - để thuận tiện trực quan \được sử dụng để hiển thị các công tắc riêng biệt; tất cả \có thể được bỏ qua; nếu sử dụng \đảm bảo không có ký tự khoảng trắng sau \.


Tóm tắt: Lệnh ytdl để tải xuống một tệp video có chất lượng âm thanh và video khả dụng cao nhất. Lưu video vào thư mục riêng của nó (do bạn chỉ định). Tải xuống tất cả các siêu dữ liệu có sẵn, ghi từng định dạng tệp tương ứng và lưu trong cùng một thư mục. Thêm siêu dữ liệu video vào tập tin đầu ra video.

Thay thế bằng của riêng bạn:

  • thay thế /archive/videos/TED_Archive/trong các thiết bị chuyển mạch --download-archive--outputvới một đường dẫn thư mục bạn chọn.
  • ví dụ đường dẫn lưu trữ / lưu trữ / video
  • liên kết video ví dụ: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • thư mục kênh ví dụ / TED_Archive

====

youtube-dl \
--limit-rate '0.25M' \
--retries '3' \
--no-overwrites \
--call-home \
--write-info-json \
--write-description \
--write-thumbnail \
--all-subs \
--convert-subs 'srt' \
--write-annotations \
--add-metadata \
--embed-subs \
--download-archive '/archive/videos/TED_Archive/TED_Archive.ytdlarchive' \
--format 'bestvideo+bestaudio/best' \
--merge-output-format 'mkv' \
--output '/archive/videos/TED_Archive/%(upload_date)s_%(id)s/TED_Archive_%(upload_date)s_%(id)s_%(title)s.%(ext)s' \
'https://www.youtube.com/watch?v=0bFs6ZiynSU' ;

Lưu ý: Kèm theo tất cả các đối số ' 'để phân tích an toàn.

Giải thích về các công tắc được đề nghị:

  • --limit-rate '0.25M'được sử dụng để giới hạn tốc độ tải xuống tối đa có sẵn của mọi phiên bản youtube-dl tính bằng B / s (byte mỗi giây).
    Đối số: bất kỳ số nguyên dương nào có hậu tố đơn vị viết hoa.
    Đơn vị Suffixes: K cho Kilobyte; M cho Megabyte; Không rõ nếu Gigabyte được hỗ trợ.
    Ngoài ra:
    1. tránh tắc nghẽn kết nối internet.
    2. hữu ích khi quản lý tốc độ tải xuống của nhiều phiên bản ytdl đồng thời.
    Ommission:
    1. làm tắc nghẽn internet; không thể duyệt, làm chậm phát video youtube.
    2. sẽ tải video nhanh nhất có thể.
    Lưu ý: Bạn có thể chạy đồng thời nhiều phiên bản youtube-dl.

  • --retries '5'được sử dụng để tự động thử lại quá trình tải xuống video nếu không thành công. Hữu ích khi tải xuống danh sách phát hoặc toàn bộ kênh (theo thuật ngữ của Youtube cũng là danh sách phát (của kênh cụ thể đó)).
    Giá trị: Chọn bất kỳ số nguyên dương. Mặc định là 10. Max là infinite(nhập dưới dạng chuỗi ký tự).

  • --continue
    Đối số: không
    Bổ sung:
    1. sẽ buộc tiếp tục tải xuống một phần tệp
    Lưu ý: ytdl tải xuống video theo từng đoạn; khối được bảo tồn nếu ytdl bất ngờ chấm dứt trong quá trình tải xuống.
    Ommission:
    1. Theo mặc định, ytdl sẽ tiếp tục tải xuống, nếu có thể.

  • --no-overwrites
    Đối số: không
    Bổ sung: sẽ không ghi đè lên các tệp siêu dữ liệu hiện có cùng tên.
    Ommission: sẽ ghi đè lên các tệp siêu dữ liệu hiện có cùng tên, nhưng không ghi tệp video.

    • --call-home được sử dụng để liên hệ với máy chủ ytdl để gỡ lỗi.

      "Nếu máy chủ của bạn có nhiều IP hoặc bạn nghi ngờ kiểm duyệt, thêm --call-home có thể là một ý tưởng hay để có thêm chẩn đoán." - Tài liệu: Lỗi , đã truy xuất 20180408,

  • --write-info-json
    Đối số: không
    Định dạng đầu ra: json;
    Thông tin Nội dung: số lượt xem, thích, trước ngày đăng hình, video và âm thanh chất lượng thông tin, vv (nhưng không mô tả văn bản video (đăng tải dưới đây video bằng cách tải lên (2018 youtube layout)))
    Ngoài ra: ghi siêu dữ liệu video thành một riêng biệt .info.jsontập tin. Lưu trong cùng thư mục với tập tin video.
    Ommission: không ảnh hưởng đến --add-metadataviệc vẫn sẽ ghi siêu dữ liệu video vào tệp đầu ra video.

  • --write-description
    Đối số: không
    Định dạng đầu ra: văn bản thuần túy;
    Bổ sung: viết văn bản được đăng bởi người tải lên video trong phần mô tả của video (bên dưới video (bố cục youtube 2018)) vào một Write .descriptiontệp riêng . Lưu trong cùng thư mục với tập tin video.

  • --write-thumbnailghi hình thu nhỏ có độ phân giải cao nhất có sẵn (được gọi maxresdefault.jpgbởi youtube) vào .jpgtệp. Đổi tên theo mẫu được chỉ định với --output. Lưu trong cùng thư mục với tập tin video.
    Đối số: không
    Định dạng đầu ra: chỉ JPEG;
    Lưu ý: Sử dụng youtube-dl --list-thumbnails '<video_url>'để điều tra các hình thu nhỏ có sẵn của một video cụ thể (không hoạt động trên các liên kết danh sách phát); Ví dụ.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsghi chú thích video vào .annotations.xmltập tin. Đổi tên theo mẫu được chỉ định với --output. Lưu trong cùng thư mục với tập tin video.
    Đối số: không có
    Định dạng đầu ra: .xml;

  • --all-subsviết tất cả các tùy chỉnh được tạo phụ đề có sẵn cho một video các tập tin của họ tương ứng (ví dụ .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Arguments: none
    Output Format: Mặc định .vtt; có thể chỉ định các định dạng khác với --sub-format
    Thông báo lỗi: Nếu không có phụ đề có sẵn, thông báo CẢNH BÁO sẽ được in thành định dạng xuất chuẩn:WARNING: video doesn't have subtitles

Lệnh hữu ích:

Lưu ý: Sử dụng youtube-dl --list-subs '<video_url>'để điều tra các hình thu nhỏ có sẵn của một video cụ thể (không hoạt động trên các liên kết danh sách phát);
Ví dụ.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Đối số: Chuỗi: định dạng mở rộng ass, srt hoặc
    Định dạng đầu ra tốt nhất : Mặc định .vtt; hoặc theo đặc tả
    Bổ sung: ghi phụ đề vào định dạng tệp được chỉ định (ví dụ .srt:). Lưu trong cùng thư mục với tập tin video.
    Ommission: phụ đề sẽ được viết dưới dạng .vtt
    Thông báo lỗi: Nếu không có phụ đề có sẵn, thông báo INFO sẽ được in thành định dạng xuất chuẩn: [ffmpeg] There aren't any subtitles to convert
    Lưu ý: chuyển đổi sẽ được thực hiện như một bước xử lý hậu kỳ trên .vtttệp sau khi tải xuống. Nếu việc thực thi ytdl bị chấm dứt bất ngờ, một số tệp phụ đề có thể không được chuyển đổi (trong trường hợp này thực hiện lại lệnh).

  • --add-metadata
    Đối số: none
    Hành vi: ghi siêu dữ liệu vào tệp đầu ra video.
    Lưu ý: không yêu cầu .info.jsontạo bởi--write-info-json

  • --embed-subs
    Đối số: không có
    Hành vi:
    1. ghi phụ đề vào tệp đầu ra video;
    2. chỉ cho mp4, webm và video mkv
    Lỗi tin nhắn: Nếu không có phụ đề có sẵn thông điệp một INFO sẽ được in để stdout - định dạng: [ffmpeg] There aren't any subtitles to embed
    Lưu ý: không yêu cầu .vtttạo ra bởi --write-sub, --write-auto-subhoặc--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Hành vi: được sử dụng để tạo tệp văn bản chứa liên kết của các video đã tải xuống trước đó. Cho phép bỏ qua các video này khi tải xuống toàn bộ kênh. Không cần thiết khi chỉ tải xuống video duy nhất.
    Đối số: Chuỗi: tổng hợp đường dẫn đến kho lưu trữ video của bạn, thư mục được đặt tên theo kênh. Tên tệp bao gồm tên kênh với .ytdlarchivephần mở rộng tệp. (cũng có thể là .txt, nhưng định dạng độc đáo cho phép phân biệt dễ dàng)
    Output Format: văn bản đơn giản; một videoID trên mỗi dòng
    Bổ sung:
    1. ytdl đọc tệp này, bỏ qua và bỏ qua tất cả các video được liệt kê với videoID của họ trong đó, ngay cả khi chưa tải xuống.
    2. tự động thêm videoID của video đã tải xuống cuối cùng vào tệp này
    Ommission: nếu tệp video và tệp siêu dữ liệu tồn tại, ytdl sẽ tải xuống lại.

  • --format ''
    Đối số: Chuỗi khuyến nghị: bestvideo+bestaudio/bestđể đảm bảo kết hợp chất lượng video và âm thanh cao nhất.
    Bổ sung: toàn quyền kiểm soát chất lượng video và chất lượng âm thanh và các kết hợp của chúng, cũng như chất lượng dự phòng
    Ommission: Mặc định youtube-dl will guess it for you by default- Tài liệu
    Lưu ý: Xem Tài liệu: Định dạng lựa chọn Ví dụ

  • --merge-output-format '<video_format>'
    Đối số: định dạng tệp video. (ví dụ: mp4, mkv, 3gp, v.v.)
    Bổ sung: có thể chỉ định định dạng tệp video
    Ommission: Mặc định youtube-dl will guess it for you by default- Tài liệu
    Lưu ý: Xem Tài liệu: Chọn định dạng

Lệnh hữu ích:

Lưu ý: Sử dụng youtube-dl --list-formats '<video_url>'để điều tra chất lượng và định dạng video và âm thanh có sẵn của một video cụ thể (không hoạt động trên các liên kết danh sách phát);
Ví dụ.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Đối số:
    1. định dạng tệp video. (ví dụ: mp4, mkv, 3gp, v.v.);
    2. Khuyến nghị: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    Bổ sung: ảnh hưởng đến quy ước đặt tên tệp cho các tệp video và tất cả các tệp siêu dữ liệu
    Ommission: Theo mặc định, tiêu đề video sẽ là tên tệp. Mẫu mặc định: %(id)s.%(ext)ssẽ xuất ex.: testvideo.mkv
    Lưu ý: Đừng quên %tiền tố và shậu tố (các hậu tố khác cũng tồn tại.); Ngươi _giữa các thành phần mẫu chỉ là một dấu phân cách và có thể là bất kỳ char nào khác. ví dụ: %(upload_date)s-%(id)s
    Lưu ý: Xem Tài liệu: Mẫu đầu ra

  • '<video_url>'
    Đối số: Chuỗi: url đến video cụ thể
    Thông báo lỗi:
    1. Nếu không có url video nào được gửi, ytdl sẽ không thực thi và hiển thị trợ giúp.
    2. Nếu url video không hợp lệ, tin nhắn ERROR được gửi sẽ được in thành thiết bị xuất chuẩn - định dạng:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Khuyến nghị lưu trữ:

  1. tạo một miscthư mục trong kho lưu trữ video của bạn và lưu trữ tất cả các video duy nhất trong đó.

  2. khi bạn tải xuống một hoặc nhiều video từ một kênh, hãy tạo một thư mục dành riêng cho kênh đó. Trong trường hợp này, tên kênh là TED Archivevà tên thư mục sẽ là TED_Archive. (Tôi ưu tiên thay thế tất cả các ký tự khoảng trắng bằng dấu gạch dưới để điều hướng thư mục và các hành động I / O tệp dễ dàng hơn khi sử dụng tập lệnh bash (hoặc python)).


Trả lời bình luận của bạn @leetbacoon

Và chỉ tự hỏi, tại sao một bản sao 1080p được coi là tốt nhất nếu 1440p có sẵn? Và tại sao 2160p được hiển thị? Tùy chọn đó không xuất hiện ở phần cuối của tôi (nó giới hạn ở 1440p) - leetbacoon

Từ tài liệu
You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file

best: Select the best quality format represented by a single file with video and audio.

bestvideo: Select the best quality video-only format

Tôi nghĩ rằng khi bạn chỉ chọn bestvà bạn chỉ định một định dạng đầu ra, youtube sẽ gửi định dạng mà nó cho là kết hợp video + âm thanh tốt nhất cho định dạng đó. Điều này có thể phải tuân theo một số quyết định cân bằng nội bộ của youtube (đầu cơ).


Theo kinh nghiệm sử dụng của mình, tôi đã phải chỉ định cụ thể bestvideo+bestaudiođể có được chất lượng cao nhất của video và âm thanh tương ứng và sau đó kết hợp chúng trong một thùng chứa .mkv.


Tôi sử dụng /bestnhư một đối số dự phòng chỉ để chắc chắn.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.