youtube_dl获取与Python的音频链接

时间:2018-03-13 00:48:24

标签: python youtube-dl

我正在尝试使用youtube_dl检索youtube上仅音频文件的链接。我想知道是否可以这样做。我在python代码中使用youtube_dl而不是终端。

非常感谢

3 个答案:

答案 0 :(得分:2)

如果您只想下载音频,可以这样做,

ydl_opts = {
    'format': 'bestaudio/best',
    'postprocessors': [{
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'mp3',
        'preferredquality': '192',
    }],
    'outtmpl': '%(title)s.%(etx)s',
    'quiet': False
}

with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download([url])  # Download into the current working directory

这是我从我工作的项目中取出的一段代码。您可以在此处查看完整的来源:https://github.com/francium/audiosave/blob/master/audiosave.py

您可以在此处查看youtube_dl的API和文档:https://github.com/rg3/youtube-dl/blob/master/README.md#embedding-youtube-dl

答案 1 :(得分:2)

websites supported by youtube-dl中只有极少数人真正提供纯音频文件。但也有一些,包括YouTube上的大多数视频。对于这些,您可以请求文件类型bestaudio并提取信息而不是下载:

from __future__ import unicode_literals 
import youtube_dl

ydl_opts = {
    'format': 'bestaudio',
}

with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    info = ydl.extract_info(
        'https://www.youtube.com/watch?v=BaW_jenozKc', download=False)
    print(info['formats'][0]['url'])

请注意,这会为您提供正确的网址。但是,如果您更改以下任何内容,则无法保证此URL可以正常工作:

  • 使用网址的IP地址(换句话说,如果您将此网址传输到另一台计算机并尝试从那里下载,则无法正常工作)。
  • HTTP标头(User-Agent等)。可以在格式字典的http_headers键中找到。
  • Cookie(可在ydl.cookiejar中找到)。

必须满足哪些约束取决于视频,并且可能会突然发生变化。例如,目前看来这个网址对于许多YouTube视频来说已经足够了,但是YouTube肯定会阻止其他IPv4地址甚至是某些视频的所有不同IP地址,或者只是音频和其他高度货币化的视频。

另请注意,您获得的文件可能是一种奇怪的格式。例如,YouTube用于发送大多数玩家无法读取的无效m4a文件。您经常会获得opus,这可能无法在任何地方得到支持。如果您只想要音频文件,最好让youtube-dl下载并转换它,如documentation和其他答案所述。

答案 2 :(得分:0)

这是现有问题的副本:download only audio from youtube video using youtube-dl in python script

但是,我会提供帮助并在此分享答案。使用此代码:

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(['insert youtube link here'])

它应该使用ffmpeg将音频转换为mp3。有关更多示例和说明,请参阅here