PyTube 下载 mp4 格式的音频文件。怎么修?

PyTube downloads audio file in mp4 format. How to fix?

下午好。我是 python 的初学者。因此,我尝试使用 PyTube 制作 YouTube Video/Audio 下载器(仅用于教育目的)。我在 youtube 上看过很多视频,我试图让这个工具变得更好。所以我添加了 video/audio 选择选项和 resulation/quality 选择选项。好消息是我已经成功制作了视频下载器。但是我在音频下载器中遇到了问题。问题是,PyTube downloads the audio file in MP4 format。我在 google 和 youtube 上搜索过。但我找不到任何解决办法。我想将 from mp4 重命名为 mp3(因为文件没问题,但格式不对)。作为初学者,我不知道如何将下载文件保存在其他地方(临时文件夹),并重命名然后将其传输到输出文件夹。我尝试添加 filename=link.title+'mp3'。但是 returns 这个错误:OSError: [Errno 22] Invalid argument: 'G:/Downloaded Videos/Latest English Ringtone | Turkish Bgm Ringtone 2021 | Bad Boy | Attitude Tone | Villain Ringtone.mp3'
这是我的代码:

from pytube import YouTube
link='https://www.youtube.com/watch?v=KrhPrPK2owA'
link=YouTube(link)
print('Title:',link.title+'\n'+'Views:',link.views)
streams=link.streams.filter(type='audio')
kbps_list=[]
itag_list=[]
print('Available Kbps: ',end='')
for s in streams:
    i=s.itag
    s=s.abr
    if s not in kbps_list:
        kbps_list.append(s)
        itag_list.append(i)
        print(s,end=' ')
reso=input('\nEnter Kbps to download: ')
if reso not in kbps_list:
    print('This Kbps is not available')
    from sys import exit
    exit()
reso=kbps_list.index(reso)
final=streams.get_by_itag(itag_list[reso])
print('Downloading...')
final.download('G:/Downloaded Videos/')
# final.download('G:/Downloaded Videos/', filename=link.title+'mp3')======================
# if I add custom filename, It returns the error ========================================
print('Successfully Downloaded!')

需要设置文件名,可以像您尝试的那样以mp3格式下载,但它仍然是mp4a格式。不确定这对你是否重要。 你的标题很奇怪,它包括文件路径。可能是 link.title 不起作用的原因。试试下面的代码去除标题和文件路径。

import os

head tail = os.path.split(link.title)
final=streams.get_by_itag(itag_list[reso]).download(filename=tail.strip(" | ") + ".mp3")

您还可以通过传递参数 output_path="some location".

来设置输出目录

看起来像:

final=streams.get_by_itag(itag_list[reso]).download(output_path="some location", filename=tail.strip(" | ") + ".mp3")