Bagaimana cara mengunduh video terbaik bersama dengan audio kompatibel terbaik dengan youtube-dl?

19

Saya ingin menggunakan pemilih format yang mirip -f bestvideo+best audio whose extension is compatible with the video extensionsehingga mereka tidak perlu disandingkan menjadi mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.).

Catatan: Saya tahu -f bestdan saya tidak menginginkannya. Saya ingin kualitas terbaik dari audio dan video sambil memastikan bahwa mereka kompatibel. Bagaimana cara melakukannya?

The Peaceful Coder
sumber
1
Mungkin pertanyaan dan jawaban ini akan membantu: askubuntu.com/q/806258/57576
andrew.46
@ andrew.46 Terima kasih telah mencoba membantu, tetapi tautannya tidak banyak membantu. Ini menjelaskan skenario ketika Anda menargetkan set ekstensi tertentu. Sedangkan dalam kasus saya, saya fleksibel dengan ekstensi saya - Saya hanya ingin mereka kompatibel. Misalnya, file webmvideo dan opusaudio, yang menghasilkan .webmfile sangat oke buat saya.
The Peaceful Coder

Jawaban:

32

Anda dapat mengunduh video dan audio terbaik dengan menggunakan:

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

Jika itu memberi Anda kesalahan, coba yang berikut ini:

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

Di sini Anda mengunduh video dan audio terbaik secara terpisah dan kemudian bergabung menjadi, dalam hal ini file mp4. Anda dapat mengubah format output pada video yang digabungkan juga.

Semoga berhasil!

Herman Karlsson
sumber
Terima kasih! Tapi saya sudah tahu itu. Seperti yang saya jelaskan di komentar saya , saya tidak ingin membatasi format pemilihan saya ke yang tertentu. Jadi, menggunakan -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'mungkin tidak mengunduh video terbaik jika itu dari webmekstensi. Bagaimanapun, +1 untuk mencoba membantu.
The Peaceful Coder
6

pertanyaan lama, tetapi jawaban pertama di google, jadi:

dengan mendefinisikan fungsi berikut, ini berfungsi untuk saya (juga memungkinkan untuk menempatkannya ~/.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
}

sekarang Anda dapat mengunduh dengan

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

sumber: kreasi sendiri

tidak ada
sumber
2
Perhatikan bahwa nama fungsi tidak valid secara teknis, khususnya tanda hubung dan tanda tambah. Jadi, Anda mungkin memiliki masalah dalam menggunakan fungsi ini, terutama mengekspornya. Saya akan merekomendasikan untuk membuat ini menjadi skrip (karena tidak perlu menjadi fungsi), dan ubah nama menjadi sesuatu seperti youtube-dl_video_and_audio_best_no_mkv_merge.
wjandrea
@wjandrea: Tanda hubung dalam nama fungsi shell adalah valid (sebagaimana untuk perintah pada umumnya). Saya tidak tahu tentang fungsi yang diekspor.
David Foerster
@ DavidvidFoerster Ya, Bash menerima nama fungsi yang tidak valid, tetapi tidak bisa mengekspornya. Jika Anda mencoba, Anda mendapatkan kesalahan,not a valid identifier
wjandrea