Come scaricare il miglior video insieme al miglior audio compatibile con youtube-dl?


20

Voglio usare un selettore di formato che è qualcosa del genere in -f bestvideo+best audio whose extension is compatible with the video extensionmodo che non abbiano bisogno di essere mischiato in un mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.).

Nota: lo so -f beste non lo voglio. Voglio le migliori qualità possibili sia di audio che di video assicurandomi che siano compatibili. Come farlo?


1
Forse questa domanda e risposta sarebbe utile: askubuntu.com/q/806258/57576
andrew.46

@ andrew.46 Grazie per aver cercato di aiutare, ma il link non è stato di grande aiuto. Descrive lo scenario quando si sceglie come target un set di estensioni specifico. Mentre nel mio caso, sono flessibile con le mie estensioni, voglio solo che siano compatibili. Ad esempio, un webmvideo e un opusfile audio, che si traducono in un .webmfile, sono perfettamente a posto per me.
The Peaceful Coder

Risposte:


33

Puoi scaricare i migliori video e audio utilizzando:

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

Se ciò ti dà un errore, prova invece quanto segue:

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

Qui scarichi separatamente i migliori video e audio e poi li unisci in un file mp4, in questo caso. Puoi anche modificare il formato di output sul video unito.

In bocca al lupo!


Grazie! Ma lo so già. Come ho spiegato nel mio commento , non voglio limitare il mio formato di selezione a uno specifico. Pertanto, l'utilizzo -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'potrebbe non scaricare il video migliore se è webmdell'estensione. Comunque, +1 per aver cercato di aiutare.
The Peaceful Coder,

6

vecchia domanda, ma prima risposta su google, quindi:

con la definizione della seguente funzione, ha funzionato per me (anche possibile inserirlo in ~/.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
}

ora puoi scaricare con

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

fonte: propria creazione


2
Si noti che il nome della funzione non è tecnicamente valido, in particolare i trattini e il segno più. Quindi potresti avere problemi con l'uso della funzione, in particolare esportandola. Consiglierei di trasformarlo in uno script (dal momento che non deve essere una funzione) e di cambiare il nome in qualcosa del genere youtube-dl_video_and_audio_best_no_mkv_merge.
wjandrea,

@wjandrea: I trattini nei nomi delle funzioni della shell sono validi (come lo sono per i comandi in generale). Non conosco le funzioni esportate però.
David Foerster,

@DavidFoerster Sì, Bash accetta nomi di funzioni non validi, ma non può esportarli. Se ci provi, ricevi un errore,not a valid identifier
wjandrea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.