Comment télécharger la meilleure vidéo avec le meilleur audio compatible avec YouTube-DL?


19

Je veux utiliser un sélecteur de format qui ressemble à quelque chose -f bestvideo+best audio whose extension is compatible with the video extensionpour qu'ils n'aient pas besoin d'être multiplexés dans un mkv ( WARNING: Requested formats are incompatible for merge and will be merged into mkv.).

Remarque: je sais -f bestet je ne veux pas cela. Je veux les meilleures qualités audio et vidéo possibles tout en veillant à ce qu'elles soient compatibles. Comment faire ça?


1
Peut-être que cette question et réponse serait utile: askubuntu.com/q/806258/57576
andrew.46

@ andrew.46 Merci d'avoir essayé d'aider, mais le lien n'a pas beaucoup aidé. Il décrit le scénario lorsque vous ciblez un ensemble d'extensions spécifique. Alors que dans mon cas, je suis flexible avec mes extensions - je veux juste qu'elles soient compatibles. Par exemple, une webmvidéo et un opusfichier audio, ce qui donne un .webmfichier me conviennent parfaitement.
The Peaceful Coder

Réponses:


32

Vous pouvez télécharger la meilleure vidéo et audio en utilisant:

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

Si cela vous donne une erreur, essayez plutôt ce qui suit:

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

Ici, vous téléchargez séparément la meilleure vidéo et le meilleur audio, puis vous les fusionnez dans un fichier mp4, dans ce cas. Vous pouvez également modifier le format de sortie de la vidéo fusionnée.

Bonne chance!


Merci! Mais je le sais déjà. Comme je l'ai expliqué dans mon commentaire , je ne veux pas limiter mon format de sélection à un format particulier. Donc, l'utilisation -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/bestvideo+bestaudio'peut ne pas télécharger la meilleure vidéo si elle est de l' webmextension. Quoi qu'il en soit, +1 pour avoir essayé d'aider.
The Peaceful Coder

6

ancienne question, mais première réponse sur google, donc:

avec la définition de la fonction suivante, cela a fonctionné pour moi (également possible de le placer ~/.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
}

maintenant vous pouvez télécharger avec

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

source: création propre


2
Notez que le nom de la fonction n'est pas techniquement valide, en particulier les tirets et le signe plus. Vous pourriez donc avoir des problèmes à utiliser la fonction, en particulier à l'exporter. Je recommanderais d'en faire un script (car il n'a pas besoin d'être une fonction) et de changer le nom en quelque chose comme youtube-dl_video_and_audio_best_no_mkv_merge.
wjandrea

@wjandrea: Les tirets dans les noms des fonctions shell sont valides (comme ils le sont pour les commandes en général). Je ne connais cependant pas les fonctions exportées.
David Foerster

@DavidFoerster Oui, Bash accepte les noms de fonction non valides, mais ne peut pas les exporter. Si vous essayez, vous obtenez une erreur,not a valid identifier
wjandrea
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.