web-dev-qa-db-fra.com

Comment télécharger des vidéos youtube en qualité audio mp3 de meilleure qualité avec youtube-dl

Je souhaite télécharger des vidéos YouTube sous forme de fichiers mp3 de la meilleure qualité qui soit. Le code ci-dessous permet de télécharger des vidéos youtube en tant que m4a mais pas nous mp3.

youtube-dl -f bestaudio --audio-quality 0 --audio-format mp3 https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_

pouvez-vous me dire comment utiliser le paramètre bestaudio pour télécharger une vidéo YouTube sous le nom mp3

51
Eka

De man youtube-dl:

-x, --extract-audio                  Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe)
    --audio-format FORMAT            Specify audio format: "best", "aac", "vorbis", "mp3", "m4a", "opus", or "wav"; "best" by default
    --audio-quality QUALITY          Specify ffmpeg/avconv audio quality, insert a value between 0 (better) and 9 (worse) for VBR or a specific bitrate like 128K (default

Donc, votre commande pourrait être:

youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 <Video-URL>

Le --audio-quality 0 utilise la qualité de codage la plus élevée, mais peut augmenter inutilement la taille de votre fichier. La valeur par défaut est 5 et peut constituer un meilleur choix en fonction de la qualité de la source.

Donc, si la qualité et la taille du fichier vous importent, évitez de les ré-encoder et restez avec les formats de musique natifs de Youtube:

youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata <Video-URL>

résultant dans un fichier m4a ou

youtube-dl -f bestaudio --extract-audio --embed-thumbnail --add-metadata <Video-URL>

résultant probablement en un fichier ogg.

Vous pouvez lister le format disponible avec

youtube-dl -F <Video-URL>
72
Maythux

Si vous voulez seulement le fichier mp3:

youtube-dl -f bestaudio  "https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_" --exec "ffmpeg -i {}  -codec:a libmp3lame -qscale:a 0 {}.mp3 && rm {} "

Si vous ne souhaitez pas supprimer le fichier d'origine:

youtube-dl -f bestaudio  "https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_" --exec "ffmpeg -i {}  -codec:a libmp3lame -qscale:a 0 {}.mp3 "
9
Luis Gneiting

Je recommande d'utiliser Pafy (Python), très facile à obtenir un lien audio, et vous pouvez télécharger directement si vous voulez:

#python3
import pafy
video = pafy.new('video id or video url')
bestaudio = video.getbestaudio()
bestaudio.bitrate #get bit rate
bestaudio.extension #extension of audio fileurl
...
bestaudio.url #get url
...
#download if you want
bestaudio.download()
8
Khang .NT

Il est également intéressant de noter d’autres morceaux sur man youtube-dl (une copie en ligne peut être trouvée ici ):

(Pour ceux qui pensent à TL; DR, lisez simplement le 4ème paragraphe, et vous pouvez utiliser youtube-dl -x URL car il devrait quand même télécharger la meilleure qualité :)

Aussi youtube-dl -f bestaudio URL fonctionne dans mon expérience! Cependant, avec ces deux options, la plupart du temps, vous aurez besoin de convertir en MP3 en utilisant ffmpeg ou similaire - puisque vous êtes déjà en train de modifier le fichier, vous pouvez aussi le taguer (utiliser l'ancien Version ID3 pour la plupart des périphériques compatibles!).

SÉLECTION DU FORMAT

Par défaut, youtube-dl essaie de télécharger la meilleure qualité, mais vous souhaiterez parfois télécharger un autre format. Le cas le plus simple consiste à demander un format spécifique, par exemple -f 22. Vous pouvez obtenir la liste des formats disponibles en utilisant --list-formats, vous pouvez également utiliser une extension de fichier (actuellement, il prend en charge les formats aac, m4a, mp3, mp4, ogg, wav, webm) ou les noms spéciaux best, bestvideo, bestaudio et pire.

Si vous souhaitez télécharger plusieurs vidéos et qu'elles n'ont pas les mêmes formats disponibles, vous pouvez spécifier l'ordre de préférence à l'aide de barres obliques, comme dans-f 22/17/18. Vous pouvez également filtrer les résultats de la vidéo en mettant une condition entre crochets, comme dans -f "best[height=720]" (ou -f "[filesize>10M]"). Cela fonctionne pour les tailles de fichier, hauteur, largeur, tbr, abr, vbr, asr et fps et les comparaisons <, <=,>,> =, =,! = Et pour ext, codec, vcodec, conteneur, et protocole et le comparaisons =,! =. Les formats pour lesquels la valeur n'est pas connue sont exclus sauf si vous mettez un point d'interrogation (?) Après l'opérateur. Vous pouvez combiner des filtres de format afin que -f "[height <=? 720][tbr>500]" sélectionne des vidéos allant jusqu'à 720p (ou des vidéos dont la hauteur est inconnue) avec un débit d'au moins 500 KBit/s.

Utilisez des virgules pour télécharger plusieurs formats, tels que -f 136/137/mp4/bestvideo,140/m4a/bestaudio.. Vous pouvez fusionner les fichiers vidéo et audio de deux formats en un seul fichier à l'aide de -f <video-format>+<audio-format> (requiert ffmpeg ou avconv), par exemple -f bestvideo+bestaudio..

Depuis fin avril 2015 et la version 2015.04.26, youtube-dl utilise -f bestvideo+bestaudio/best comme format de sélection par défaut (voir les numéros 5447, 5456). Si ffmpeg ou avconv sont installés, il en résulte le téléchargement séparé de bestvideo et de bestaudio et leur multiplexage dans un fichier unique offrant la meilleure qualité globale disponible. Autrement, le résultat est optimal et le téléchargement de la meilleure qualité disponible est servi en tant que fichier unique. Le mieux est également nécessaire pour les vidéos qui ne proviennent pas de YouTube car elles ne fournissent pas l’audio et la vidéo dans deux fichiers différents. Si vous souhaitez uniquement télécharger certains formats de tableau de bord (par exemple, si vous ne souhaitez pas obtenir de vidéos d'une résolution supérieure à 1080p), vous pouvez ajouter -f bestvideo[height<=?1080]+bestaudio/best à votre fichier de configuration. Notez que si vous utilisez youtube-dl pour diffuser en continu sur stdout (et très probablement pour le diriger vers votre lecteur multimédia), c’est-à-dire que vous spécifiez explicitement le modèle de sortie en tant que -o -, youtube-dl utilise toujours le format de sélection -f best afin de démarrer immédiatement la livraison du contenu. et ne pas attendre que bestvideo et bestaudio soient téléchargés et multiplexés.

Si vous souhaitez conserver l'ancien comportement de sélection de format (avant youtube-dl 2015.04.26), c'est-à-dire que vous souhaitez télécharger la meilleure qualité de média disponible servie en tant que fichier unique, vous devez spécifier explicitement votre choix avec -f best. Vous voudrez peut-être l'ajouter au fichier de configuration (#configuration) afin de ne pas le taper à chaque fois que vous exécuterez youtube-dl.

...

Pouvez-vous s'il vous plaît mettre l'option -b de retour?

La plupart des gens qui posent cette question ne savent pas que YouTube-dl télécharge désormais par défaut la qualité la plus élevée disponible, comme indiqué par YouTube, soit 1080p ou 720p dans certains cas. Vous n'avez donc plus besoin de l'option -b. Pour certaines vidéos spécifiques, YouTube ne signale peut-être pas leur disponibilité dans un format spécifique de haute qualité qui vous intéresse. Dans ce cas, demandez-la simplement avec l'option -f et youtube-dl tentera de la télécharger.

Youtube (probablement comme il est supposé être un site de lecture vidéo) compresse apparemment aussi l'audio (voir ici ) jusqu'à 120 ~ KBs, ce qui est assez bas mais pour la plupart semble OK.

Pour comparer les vidéos téléchargées, vous pouvez interroger les pistes vidéo/audio téléchargées (vous devrez peut-être utiliser avprobe au lieu de ffprobe) pour déterminer laquelle est la meilleure:

$ ffprobe -hide_banner output-output-loads-of-options.webm
Input #0, matroska,webm, from 'output-output-loads-of-options.webm':
  Metadata:
    encoder         : google
  Duration: 00:04:02.63, start: 0.000000, bitrate: 118 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)
$ ffprobe -hide_banner output_with_just_-x.ogg 

Input #0, ogg, from 'output_with_just_-x':
  Duration: 00:04:02.65, start: 0.000000, bitrate: 117 kb/s
    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp, 128 kb/s
    Metadata:
      LANGUAGE        : eng
      ENCODER         : Lavf56.4.101
5
Wilf