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

时间:2019-02-10 12:08:06

标签: python pytube

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

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倍大的文件,则可能需要一段时间才能完成。处理这些数据以加快速度时,我可以做些什么吗?

2 个答案:

答案 0 :(得分:2)

此编程问题实际上是X Y 软件推荐问题,因为存在一个免费的跨平台(Windows / Mac / Linux)命令行程序youtube-dl,可以将YouTube视频转换为mp3文件:

youtube-dl --extract-audio --audio-format mp3 <video URL>   

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

youtube-dl可以安装在使用以下命令安装了Python的任何操作系统上:

pip install youtube-dl  

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

youtube-dl -f FORMAT -ci --playlist-start NUMBER --playlist-end NUMBER <URL-of-playlist>   

如果您已经购买了CD并在YouTube上找到了该CD上的歌曲的音乐视频,则可以用youtube-dl做其他事情。您可以从自己的CD中下载音乐视频,删除其音轨并将其替换为高清音轨。

答案 1 :(得分:0)

所以我只想报告以上帖子的结果。我知道这可能属于注释,但是我尝试了略有不同的方法,并希望提供代码。我研究了人们习惯致电 youtube-dl的各种方法,并比较了速度。

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

第一种方法:使用os.system播放命令行

import os
os.system('youtube-dl --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=U_SLL3-NEMM')

结果:大约30秒,并产生了MP3。

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

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大的存储空间)

第三种方法:通过子进程运行命令行

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。它编辑导入的一些初始设置,最终更改输出文件。抱歉,这对您中的某些人来说显而易见!只是为偶然发现此问题的其他新程序员做解释。