在Python脚本中使用youtube-dl仅从youtube视频下载音频

问题描述 投票:0回答:5

有一个关于使用 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源不是很有帮助

关于如何编写此脚本有什么建议吗?

python audio youtube youtube-dl
5个回答
113
投票
请继续阅读

开发人员说明以获取修改后的示例:

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 中的 format

postprocessors
 文档条目。


17
投票
使用

postprocessors

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

如果您想传递额外的

ffmpeg

avconv
 选项,这些选项未包含在 
youtube-dl
 库中(例如音频比特率 - 
-ar <BR>
 中的 
ffmpeg
),请将 
postprocessor_args
 添加为列表。 

您还可以将

ffmpeg

 设置为 
avconv
 而不是 
prefer_ffmpeg
并保留原始和转换后的音频文件,将 
True

设置为

'keepvideo'

例如:

True

所有可用选项的列表位于
文档
中。您可以阅读 ffmpeg 后处理器的代码

here 他们的 GitHub README

中有一个不太复杂的示例。

我本来不想回答这个问题,其实我是来给自己找答案的。在我的搜索中,这些答案都没有令人满意。然而,我确实找到了一个非常适合我的优秀替代方案,我觉得我应该分享:模块 pytube。

14
投票
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

2
投票
用途:

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 链接或名称,然后将下载相应的音频。

2
投票

filter_by

    

© www.soinside.com 2019 - 2024. All rights reserved.