使用python脚本中的youtube-dl从youtube视频下载音频

时间:2014-12-14 20:09:10

标签: python audio youtube youtube-dl

来自YouTube的使用youtube-dl的{​​{3}}上有一个few posts,但这些都不是具体或太有帮助的。我想知道从Python脚本中最好的方法是什么。

例如,这是下载视频的README示例:

import youtube_dl

ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])

显然,如果你只是关心音频,你宁愿不下载整个视频......

downloading audio来源只是非常有用(例如,不是很有用)。

有关如何编写此脚本的任何建议吗?

3 个答案:

答案 0 :(得分:41)

继续阅读developer instructions中的修改示例:

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'])

如果可能/支持,这将下载音频文件。如果文件已经不是mp3,则使用ffmpegavconv将下载的文件转换为mp3。有关详细信息,请参阅当前版本的youtube-dl中的formatpostprocessors文档条目。

答案 1 :(得分:2)

使用postprocessors参数。所有可用的后处理器的列表都可以在here中找到。

如果您要传递ffmpeg库中未包含的其他avconvyoutube-dl选项(例如音频比特率--ar <BR>中的ffmpeg) ,将postprocessor_args添加为列表。

与将ffmpeg设置为avconv的{​​{1}}相比,您还更喜欢prefer_ffmpeg

并将原始音频文件和转换后的音频文件都设置为True'keepvideo'

例如:

True

所有可用选项的列表在documentation中。您可以阅读ffmpeg posprocessor的代码here

一个简单的示例在其GitHub README中。

答案 2 :(得分:1)

由于youtube_dl已停产,您可以使用tube_dl

用法:

pip install tube_dl
from tube_dl import Youtube

就您而言,这是仅获取音频的方法。

from tube_dl import Youtube
youtube('Your URL').formats.filter(only_audio=True)[0]**.download(convert='mp3')

**您可以使用自己喜欢的质量而不是0。 只需输入:

print(youtube('Your URL').formats.filter(only_audio=True))

这将打印所有支持的音频。然后指定您选择的索引并下载