有一个关于使用 youtube-dl
从 YouTube 下载音频的少数帖子
,但没有一个是具体的或太有帮助的。我想知道从 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'])
显然,如果您只关心音频,您宁愿不下载整个视频......因此,
youtube-dl源不是很有帮助
关于如何编写此脚本有什么建议吗?
开发人员说明以获取修改后的示例:
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,则使用
ffmpeg 或 avconv 将下载的文件转换为 mp3。有关更多信息,请参阅当前版本的 youtube-dl 中的 format
postprocessors
文档条目。
postprocessors
参数。所有可用后处理器的列表可以在here找到。 如果您想传递额外的
ffmpeg
或
avconv
选项,这些选项未包含在
youtube-dl
库中(例如音频比特率 -
-ar <BR>
中的
ffmpeg
),请将
postprocessor_args
添加为列表。您还可以将
ffmpeg
设置为
avconv
而不是
prefer_ffmpeg
。
并保留原始和转换后的音频文件,将
True
设置为 'keepvideo'
。
例如:
True
所有可用选项的列表位于
文档中。您可以阅读 ffmpeg 后处理器的代码
here。 他们的 GitHub README
中有一个不太复杂的示例。我本来不想回答这个问题,其实我是来给自己找答案的。在我的搜索中,这些答案都没有令人满意。然而,我确实找到了一个非常适合我的优秀替代方案,我觉得我应该分享:模块 pytube。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'])
由于 youtube_dl 已停止使用,您可以使用 tube_dl
from pytube import YouTube
import os
yt = YouTube('YOUR LINK HERE')
video = yt.streams.filter(only_audio=True).first()
out_file = video.download(output_path=".")
base, ext = os.path.splitext(out_file)
new_file = base + '.mp3'
os.rename(out_file, new_file)
对于您的情况,以下是仅获取音频的方法。
pip install tube_dl
from tube_dl import Youtube
** 您可以使用您最喜欢的质量,而不是 0。 只需输入:
from tube_dl import Youtube
youtube('Your URL').formats.filter(only_audio=True)[0]**.download(convert='mp3')
这将打印所有支持的音频。然后指定您选择的索引并下载编辑:
print(youtube('Your URL').formats.filter(only_audio=True))
filter
代替虽然这篇文章已经很长时间没有修改了,但我最近一直在研究它并用 python 构建了一个 GUI。您可以在其中输入 yt 链接或名称,然后将下载相应的音频。