Il existe quelques quelquespublications sur télécharger de l'audio de YouTube à l'aide de youtube-dl
, mais aucune d'entre elles n'est concrète ou trop utile. Je me demande quelle est la meilleure façon de le faire à partir d'un script Python.
Par exemple, voici l'exemple README pour le téléchargement de vidéos:
import youtube_dl
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
Évidemment, si vous vous souciez de l'audio, vous préférez ne pas télécharger la vidéo en entier ...
Le youtube-dl source est seulement très utile (c'est-à-dire pas très).
Des suggestions comment script ceci?
Lisez la suite dans les instructions developer pour un exemple modifié:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
Cela téléchargera un fichier audio si possible/supporté. Si le fichier n'est pas déjà au format mp3, le fichier téléchargé sera converti au format mp3 à l'aide de ffmpeg ou avconv . Pour plus d'informations, reportez-vous aux entrées de documentation format
et postprocessors
dans une version actuelle de youtube-dl.
Utilisez l'argument postprocessors
. La liste de tous les post-processeurs disponibles peut être trouvée ici .
Si vous souhaitez passer des options ffmpeg
ou avconv
supplémentaires, qui ne figurent pas dans la bibliothèque youtube-dl
(comme audio bitrate - -ar <BR>
dans ffmpeg
), ajoutez postprocessor_args
en tant que liste.
Vous pouvez également préférer ffmpeg
au lieu de avconv
et régler prefer_ffmpeg
à True
.
Et pour conserver les fichiers audio originaux et convertis, définissez 'keepvideo'
sur True
.
Par exemple:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'wav',
'preferredquality': '192'
}],
'postprocessor_args': [
'-ar', '16000'
],
'prefer_ffmpeg': True,
'keepvideo': True
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
La liste de toutes les options disponibles se trouve dans la documentation . Vous pouvez lire le code de ffmpeg posprocessor ici .
Et un exemple moins complexe est dans leur fichier GitHub README .