web-dev-qa-db-fra.com

télécharger uniquement des fichiers audio à partir d'une vidéo youtube à l'aide de youtube-dl en script python

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?

29
lollercoaster

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.

39
phihag

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 .

1
Pheon