Làm cách nào để tải xuống video tốt nhất cùng với âm thanh tương thích tốt nhất với youtube-dl?


17

Tôi muốn sử dụng một bộ chọn định dạng giống như -f bestvideo+best audio whose extension is compatible with the video extensionvậy để chúng không cần phải được chuyển sang mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.).

Lưu ý: Tôi biết -f bestvà tôi không muốn điều đó. Tôi muốn chất lượng tốt nhất có thể của cả âm thanh và video trong khi đảm bảo rằng chúng tương thích. Làm thế nào để làm điều đó?


1
Có lẽ câu hỏi và câu trả lời này sẽ hữu ích: askubfox.com/q/806258/57576
andrew.46

@ andrew.46 Cảm ơn bạn đã cố gắng giúp đỡ, nhưng liên kết không giúp được nhiều. Nó mô tả kịch bản khi bạn nhắm mục tiêu một bộ tiện ích mở rộng cụ thể. Trong trường hợp của tôi, tôi linh hoạt với các tiện ích mở rộng của mình - tôi chỉ muốn chúng tương thích. Ví dụ: webmvideo và opustệp âm thanh dẫn đến .webmtệp hoàn toàn ổn đối với tôi.
Bộ giải mã hòa bình

Câu trả lời:


30

Bạn có thể tải xuống video và âm thanh tốt nhất bằng cách sử dụng:

youtube-dl -f bestvideo+bestaudio "link to youtube video"

Nếu điều đó gây ra lỗi cho bạn, hãy thử các cách sau:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio' --merge-output-format mp4 "link to youtube video"

Tại đây bạn tải xuống video và âm thanh tốt nhất một cách riêng biệt và sau đó hợp nhất thành một, trong trường hợp này là tệp mp4. Bạn cũng có thể thay đổi định dạng đầu ra trên video được hợp nhất.

Chúc may mắn!


Cảm ơn! Nhưng tôi đã biết điều đó. Như tôi đã giải thích trong nhận xét của mình , tôi không muốn giới hạn định dạng lựa chọn của mình ở một định dạng cụ thể. Vì vậy, sử dụng -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'có thể không tải xuống video tốt nhất nếu đó là webmphần mở rộng. Dù sao, +1 để cố gắng giúp đỡ.
Bộ giải mã hòa bình

6

Câu hỏi cũ, nhưng câu trả lời đầu tiên trên google, vì vậy:

với việc xác định hàm sau, nó hoạt động với tôi (cũng có thể đặt nó vào ~/.bashrc):

youtube-dl_video_and_audio_best_no_mkv_merge () {
  video_type=$(youtube-dl -F "$@" | grep "video only" | awk '{print $2}' | tail -n 1)
  case $video_type in
    mp4)
      youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]' "$@";;
    webm)
      youtube-dl -f 'bestvideo[ext=webm]+bestaudio[ext=webm]' "$@";;
    *)
      echo "new best videoformat detected, please check it out! -> aborted";;
  esac
}

bây giờ bạn có thể tải xuống với

youtube-dl_video_and_audio_best_no_mkv_merge "https://www.youtube.com/watch?v=*******" "https://https://www.youtube.com/watch?v=********"

nguồn: sáng tạo riêng


2
Lưu ý rằng tên hàm không hợp lệ về mặt kỹ thuật, cụ thể là dấu gạch ngang và dấu cộng. Vì vậy, bạn có thể có vấn đề khi sử dụng chức năng, đặc biệt là xuất nó. Tôi khuyên bạn nên biến điều này thành một tập lệnh (vì nó không cần phải là một hàm) và thay đổi tên thành một cái gì đó như thế nào youtube-dl_video_and_audio_best_no_mkv_merge.
wjandrea

@wjandrea: Dấu gạch ngang trong tên hàm shell là hợp lệ (vì chúng là cho các lệnh nói chung). Tôi không biết về các chức năng xuất khẩu mặc dù.
David Foerster

@DavidFoerster Có, Bash chấp nhận tên hàm không hợp lệ, nhưng không thể xuất chúng. Nếu bạn thử, bạn sẽ gặp lỗi,not a valid identifier
wjandrea
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.