首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >需要更快地将YouTube链接转换为声音文件

需要更快地将YouTube链接转换为声音文件
EN

Stack Overflow用户
提问于 2019-02-10 12:08:06
回答 2查看 3.4K关注 0票数 2

我有一个YouTube链接列表,我只想下载声音文件(一个专辑列表,然后我将变成.wav文件来分析)。我一直在使用Pytube,但是它非常慢,我希望找到一种可能在文件实际下载或处理之前压缩文件的方法,以便它能够更快地提供文件。下面是我使用的代码:

代码语言:javascript
运行
复制
from pytube import YouTube
import time

t1 = time.time()
myAudioStream = YouTube("https://www.youtube.com/watch?v=U_SLL3-NEMM").streams.last()
t2 = time.time()
print(t2-t1)
myAudioStream.download("C:\\Users\\MyUser\\Python Projects\\AlbumFiles\\")
t3 = time.time()
print(t3-t2)

目前那里的链接只是一首歌,因为我想知道它需要多长时间,而且还需要大约200秒钟。如果我想下载一些4-8倍大的东西,它可能需要很长一段时间才能完成。在处理这些数据时,我能做些什么来加快速度吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-10 12:18:09

有一个免费的跨平台(Windows/Mac/Linux),命令行程序名为youtube-dl,可以将YouTube视频转换为mp3文件。

显示特定YouTube URL的可用格式列表,我在下面的代码行中用<URL>表示了该列表。

代码语言:javascript
运行
复制
youtube-dl -F <URL>

某些特定YouTube URL的可用格式仅为音频格式,在youtube-dl -F <URL>的结果中它们被标识为audio only

youtube-dl可以使用以下命令将YouTube视频转换为mp3文件:

代码语言:javascript
运行
复制
youtube-dl -f your-choice-of-format --extract-audio --audio-format mp3 <URL> 

其中,your-choice-of-format被从youtube-dl -F <URL>结果中选择的格式整数替换。

在执行上述命令之前,必须先下载YouTube视频,因为youtube-dl无法将视频转换为mp3格式,除非它能够访问它,所以youtube-dl将整个视频作为临时文件下载,然后在完成转换时自动删除该临时文件。

可以在安装了Python的任何操作系统上安装以下命令:

代码语言:javascript
运行
复制
python3 -m pip install youtube-dl  

除了将YouTube视频转换为mp3文件之外,youtube-dl还提供了一系列惊人的功能,包括下载播放列表和频道,从文本文件中的URL列表下载多个视频,以及通过指定要从播放列表下载的一批视频的开始NUMBER和结束NUMBER来下载部分播放列表或频道,如下所示:

代码语言:javascript
运行
复制
youtube-dl -f FORMAT -ci --playlist-start NUMBER --playlist-end NUMBER <URL-of-playlist>   

如果你已经买了一张CD,并在YouTube上找到了这首歌的音乐视频,你还可以用youtube-dl做点什么。您可以下载音乐视频,删除它的音频轨道,并替换它从您自己的CD高清晰度音频轨道。

票数 6
EN

Stack Overflow用户

发布于 2019-02-10 14:49:41

所以我想报告一下上面帖子的结果。我知道这可能属于注释,但我尝试了一些不同的方法,并希望提供代码。我观察了人们过去打电话给youtube-dl的不同方式,并比较了速度。

所以在我所有的方法中,我使用youtube-dl,因为它比Pytube快得多。我不知道是什么让Pytube变慢了,但是如果有人想评论一个解释,我很感兴趣!

First method:使用os.system播放命令行

代码语言:javascript
运行
复制
import os
os.system('youtube-dl --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=U_SLL3-NEMM')

结果:30秒左右,产生MP3。

第二种方法:将youtube-dl作为库嵌入

代码语言:javascript
运行
复制
import youtube-dl as ydl
with youtube_dl.YoutubeDL({}) as ydl:
    ydl.download(['https://www.youtube.com/watch?v=U_SLL3-NEMM'])

结果:大约10秒,并产生了一个MKV文件(比MP3更大的存储空间)

第三种方法:使用子进程运行命令行

代码语言:javascript
运行
复制
from subprocess import call
command = "youtube-dl --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=U_SLL3-NEMM"
call(command.split(), shell=False)

结果:与os的第一种方法相似;30秒,输出为MP3。

编辑:我找到了一种将最快的方法(嵌入youtube-dl)输出为wav、mp3或其他任何东西的方法(在我的例子中,是.wav)。Here is where I found it。它编辑导入的一些初始设置,最终更改输出文件。对不起,如果这一切对你们中的一些人来说都是显而易见的话!只是为其他新程序员解释一下这件事。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54616204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档