【发布时间】:2019-10-19 20:21:16
【问题描述】:
我想:
从 Youtube 下载音频文件
我已经用 pytube 完成了,但是,即使我将 only_audio 设置为 True,它也被格式化为 mp4。
然后将音频文件转换为 numpy 数组
有些库适用于 mp3,例如 pydub,但不适用于 mp4。当我尝试 moviepy 时,它失败了,因为没有视频,因此没有帧率。我不想下载视频,因为它需要更长的时间。
请注意,我想要的是音频,而不是视频。
怎么可能:
从 youtube 下载音频,并将其转换为 numpy 数组?
感谢您的帮助:)
编辑
感谢 cmets,我已经设法使用 ffmpeg 将 mp4 转换为 mp3
但是,当我尝试使用 this question 中的代码将其转换为 numpy 数组时,如下所示:
def read(f, normalized=False):
"""MP3 to numpy array"""
a = pydub.AudioSegment.from_mp3(f)
y = np.array(a.get_array_of_samples())
if a.channels == 2:
y = y.reshape((-1, 2))
if normalized:
return a.frame_rate, np.float32(y) / 2**15
else:
return a.frame_rate, y
它引发了这个错误:
Traceback (most recent call last):
File "C:\Users\myname\Google Drive\Python\Projects\Music\Downloads\Music Read.py", line 63, in <module>
print(read(x,True))
......
File "C:\Users\myname\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 1017, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified
这很奇怪,因为如下所示,路径应该可以完美运行
for f in os.listdir(path):
if (f.endswith(".mp3")):
print(f)
x = 'C:/Users/myname/Google Drive/Python/Projects/Music/Downloads/{}'.format(f)
print(os.path.exists(x))
print(open(x))
print(read(x,True))
输出:
test-Copy.mp3
True
c:/users/myname/google drive/python/projects/music/downloads/test-copy.mp3
<_io.TextIOWrapper name='c:/users/myname/google drive/python/projects/music/downloads/test-copy.mp3' mode='r' encoding='cp1252'>
另外,当我输入一个实际上不存在的文件路径时,它会输出一个不同的错误:
......
File "C:\Users\myname\AppData\Local\Programs\Python\Python36\lib\site-packages\pydub\utils.py", line 57, in _fd_or_path_or_tempfile
fd = open(fd, mode=mode)
FileNotFoundError: [Errno 2] No such file or directory: 'c:/users/myname/google drive/python/projects/music/downloads/hi'
如何使用this question 中的代码将 mp3 转换为 numpy 数组,如果我不能,还能如何?
顺便说一句,我正在使用 python 3.6 在 Win10 上运行
我真的希望我已经足够清楚了,再次提前感谢您的任何建议:)
【问题讨论】:
-
据我所知,这个问题是在视频上,而不是音频上。
-
用
ffmpeg -i old.mp4 new.mp3转换文件怎么样? -
正如@LukaszTracewski 所说,ffmpeg 是您在音频+视频渲染和转换领域的朋友...... ffmpeg 也可作为库提供,而不仅仅是作为可执行文件......许多更高级别的工具在幕后使用了什么
-
@LukaszTracewski 和 Scott,谢谢,稍后我会尝试为您提供更新
标签: python numpy audio video converters