需要更快地将 YouTube link 转换为声音文件
Need to turn YouTube link into sound file more quickly
我有一个 YouTube link 列表,我只想下载声音文件(一个专辑列表,然后我将把它转换成 .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)
里面的link目前只有一首歌,因为我想知道要花多长时间,现在还需要200秒左右。如果我想下载 4-8 倍大的东西,可能需要很长时间才能完成。在处理这些数据时我可以做些什么来加快速度?
有一个名为 youtube-dl 的免费跨平台 (Windows/Mac/Linux) 命令行程序,可以将 YouTube 视频转换为 mp3 文件。
显示特定 YouTube URL 的可用格式列表,我在以下代码行中用 <URL>
表示。
youtube-dl -F <URL>
特定 YouTube URL 的一些可用格式仅为音频,它们在 youtube-dl -F <URL>
的结果中被标识为 audio only
。
youtube-dl 可以使用以下命令将 YouTube 视频转换为 mp3 文件:
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 下载整个视频作为一个临时文件,然后在完成转换后自动删除临时文件。
youtube-dl 可以安装在使用此命令安装 Python 的任何 OS 上:
python3 -m 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 中的高清音轨。
所以我只想报告上面post的结果。我知道这可能属于评论,但我尝试了稍微不同的方法并想提供代码。我查看了人们用来 调用 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存储量space)
第三种方法:运行带子进程的命令行
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。它编辑导入的一些初始设置,最终更改输出文件。对不起,如果这对你们中的一些人来说是显而易见的!只是为偶然发现这一点的其他新程序员解释。
我有一个 YouTube link 列表,我只想下载声音文件(一个专辑列表,然后我将把它转换成 .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)
里面的link目前只有一首歌,因为我想知道要花多长时间,现在还需要200秒左右。如果我想下载 4-8 倍大的东西,可能需要很长时间才能完成。在处理这些数据时我可以做些什么来加快速度?
有一个名为 youtube-dl 的免费跨平台 (Windows/Mac/Linux) 命令行程序,可以将 YouTube 视频转换为 mp3 文件。
显示特定 YouTube URL 的可用格式列表,我在以下代码行中用 <URL>
表示。
youtube-dl -F <URL>
特定 YouTube URL 的一些可用格式仅为音频,它们在 youtube-dl -F <URL>
的结果中被标识为 audio only
。
youtube-dl 可以使用以下命令将 YouTube 视频转换为 mp3 文件:
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 下载整个视频作为一个临时文件,然后在完成转换后自动删除临时文件。
youtube-dl 可以安装在使用此命令安装 Python 的任何 OS 上:
python3 -m 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 中的高清音轨。
所以我只想报告上面post的结果。我知道这可能属于评论,但我尝试了稍微不同的方法并想提供代码。我查看了人们用来 调用 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存储量space)
第三种方法:运行带子进程的命令行
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。它编辑导入的一些初始设置,最终更改输出文件。对不起,如果这对你们中的一些人来说是显而易见的!只是为偶然发现这一点的其他新程序员解释。