วิธีการดาวน์โหลดวิดีโอที่ดีที่สุดพร้อมกับเสียงที่เข้ากันได้ดีที่สุดกับ youtube-dl


21

ฉันต้องการใช้ตัวเลือกรูปแบบที่คล้ายกับ-f bestvideo+best audio whose extension is compatible with the video extensionว่าพวกเขาไม่จำเป็นต้องทำการรวมเข้ากับ mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.)

หมายเหตุ: ฉันรู้-f bestและไม่ต้องการสิ่งนั้น ฉันต้องการคุณภาพที่ดีที่สุดของทั้งเสียงและวิดีโอในขณะที่ทำให้แน่ใจว่ามันเข้ากันได้ ทำอย่างไร


1
บางทีคำถามและคำตอบนี้อาจเป็นประโยชน์: askubuntu.com/q/806258/57576
andrew.46

@ andrew.46 ขอบคุณที่พยายามช่วย แต่ลิงค์ไม่ได้ช่วยอะไรมาก มันอธิบายสถานการณ์เมื่อคุณกำหนดเป้าหมายชุดส่วนขยายเฉพาะ ในกรณีของฉันฉันมีความยืดหยุ่นกับส่วนขยายของฉัน - ฉันแค่ต้องการให้พวกเขาเข้ากันได้ ตัวอย่างเช่นwebmไฟล์วิดีโอและopusไฟล์เสียงซึ่งส่งผลให้.webmไฟล์ไม่เป็นไรสำหรับฉัน
Coder สันติสุข

คำตอบ:


34

คุณสามารถดาวน์โหลดวิดีโอและเสียงที่ดีที่สุดโดยใช้:

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

หากสิ่งนั้นทำให้คุณมีข้อผิดพลาดลองต่อไปนี้แทน:

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

ที่นี่คุณดาวน์โหลดวิดีโอและเสียงที่ดีที่สุดแยกจากกันและรวมเป็นไฟล์ mp4 ในกรณีนี้ คุณสามารถเปลี่ยนรูปแบบผลลัพธ์ในวิดีโอที่ผสานได้เช่นกัน

โชคดี!


ขอบคุณ! แต่ฉันรู้แล้ว ตามที่ฉันอธิบายในความคิดเห็นของฉันฉันไม่ต้องการ จำกัด รูปแบบการเลือกของฉันให้เป็นรูปแบบใดรูปแบบหนึ่ง ดังนั้นการใช้-f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'อาจไม่ดาวน์โหลดวิดีโอที่ดีที่สุดหากเป็นwebmส่วนขยาย อย่างไรก็ตาม +1 สำหรับการพยายามช่วยเหลือ
ผู้ทำรหัสอย่างสันติ

! ควรติดตั้ง ffmpeg สำหรับตัวเลือกนี้
babygame0ver

6

คำถามเก่า แต่คำตอบแรกใน google ดังนั้น:

ด้วยการกำหนดฟังก์ชั่นต่อไปนี้มันใช้งานได้สำหรับฉัน (ก็เป็นไปได้ที่จะวางไว้ใน~/.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
}

ตอนนี้คุณสามารถดาวน์โหลดด้วย

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

แหล่งที่มา: การสร้างของตัวเอง


2
โปรดทราบว่าชื่อฟังก์ชันไม่ถูกต้องทางเทคนิคโดยเฉพาะเครื่องหมายขีดกลางและเครื่องหมายบวก ดังนั้นคุณอาจมีปัญหาในการใช้ฟังก์ชั่นโดยเฉพาะการส่งออก ฉันจะแนะนำจะทำให้เรื่องนี้ลงในสคริปต์ (เพราะมันไม่จำเป็นต้องมีฟังก์ชั่น) youtube-dl_video_and_audio_best_no_mkv_mergeและเปลี่ยนชื่อเพื่อสิ่งที่ต้องการ
wjandrea

@wjandrea: เครื่องหมายขีดกลางในชื่อฟังก์ชันของเชลล์นั้นถูกต้อง (เนื่องจากเป็นคำสั่งทั่วไป) ฉันไม่รู้เกี่ยวกับฟังก์ชั่นการส่งออก
David Foerster

@DavidFoerster ใช่ Bash ยอมรับชื่อฟังก์ชันที่ไม่ถูกต้อง แต่ไม่สามารถส่งออกได้ ถ้าคุณลองคุณจะได้รับข้อผิดพลาดnot a valid identifier
wjandrea
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.