Muh*_*han 12 audio file-format youtube-api python-3.x pytube
我一直在使用 pytube 在 python 中下载 youtube 视频。到目前为止,我已经能够以 mp4 格式下载。
yt = pytube.YouTube("https://www.youtube.com/watch?v=WH7xsW5Os10")
vids= yt.streams.all()
for i in range(len(vids)):
print(i,'. ',vids[i])
vnum = int(input("Enter vid num: "))
vids[vnum].download(r"C:\YTDownloads")
print('done')
Run Code Online (Sandbox Code Playgroud)
我设法下载了“音频”版本,但它是.mp4
格式的。我确实尝试将扩展名重命名为.mp3
,并播放了音频,但应用程序(Windows Media Player)停止响应并开始滞后。
如何直接以音频文件.mp3
格式下载视频?请提供一些代码,因为我是使用此模块的新手。
如何将视频直接下载为 .mp3 格式的音频文件?
恐怕你不能。可直接下载的唯一文件是在 下列出的文件yt.streams.all()
。
但是,将下载的音频文件从 转换.mp4
为.mp3
格式很简单。例如,如果您安装了ffmpeg,则从终端运行此命令即可解决问题(假设您位于下载目录中):
$ ffmpeg -i downloaded_filename.mp4 new_filename.mp3
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用 Python 的subprocess
模块以编程方式执行 ffmpeg 命令:
import os
import subprocess
import pytube
yt = pytube.YouTube("https://www.youtube.com/watch?v=WH7xsW5Os10")
vids= yt.streams.all()
for i in range(len(vids)):
print(i,'. ',vids[i])
vnum = int(input("Enter vid num: "))
parent_dir = r"C:\YTDownloads"
vids[vnum].download(parent_dir)
new_filename = input("Enter filename (including extension): ")) # e.g. new_filename.mp3
default_filename = vids[vnum].default_filename # get default name using pytube API
subprocess.run([
'ffmpeg',
'-i', os.path.join(parent_dir, default_filename),
os.path.join(parent_dir, new_filename)
])
print('done')
Run Code Online (Sandbox Code Playgroud)
编辑:删除了subprocess.call
. 使用subprocess.run
(除非您使用的是 Python 3.4 或更低版本)
我假设您使用的是 Python 3 和pytube 9.x,您可以使用过滤方法来“过滤”您感兴趣的文件扩展名。
例如,如果您想下载 mp4 视频文件格式,它将如下所示:
pytube.YouTube("url here").streams.filter(file_extension="mp4").first()
Run Code Online (Sandbox Code Playgroud)
如果你想提取音频,它将如下所示:
pytube.YouTube("url here").streams.filter(only_audio=True).all()
Run Code Online (Sandbox Code Playgroud)
希望对登陆此页面的任何人有所帮助;而不是进行不必要的转换。
归档时间: |
|
查看次数: |
24887 次 |
最近记录: |