Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我试图使用MoviePy模块将视频mp4文件转换为音频mp3格式,但它显示出非类型错误_Python_Moviepy_Pytube - Fatal编程技术网

Python 我试图使用MoviePy模块将视频mp4文件转换为音频mp3格式,但它显示出非类型错误

Python 我试图使用MoviePy模块将视频mp4文件转换为音频mp3格式,但它显示出非类型错误,python,moviepy,pytube,Python,Moviepy,Pytube,属性错误:非类型对象没有属性write_audiofile请尝试video.write_audiofile(os.path.join(path+“/”+title+“.mp3”) 您最好使用ffmpeg转换视频,或使用opencv进行所有视频管理。试试: def download_audio(): #try: b2.config(text="Please wait...") b2.config(state=DISABLED) stream = yt.s


属性错误:非类型对象没有属性write_audiofile

请尝试
video.write_audiofile(os.path.join(path+“/”+title+“.mp3”)

您最好使用ffmpeg转换视频,或使用opencv进行所有视频管理。

试试:

def download_audio():
#try:
    b2.config(text="Please wait...")
    b2.config(state=DISABLED)
    stream = yt.streams.filter(res="480p")
    path = filedialog.askdirectory()
    if path == None:
        return
    stream[0].download(path)
    for i in os.listdir(path):
        os.rename(os.path.join(path,i),os.path.join(path,i.replace(' ','_')))
    title = yt.title.replace(' ','_')
    print(title)
    print(path)
    video = VideoFileClip(os.path.join(path+"//"+title+".mp4"))
    print(video)
    video.audio.write_audiofile(os.path.join(path+"//"+title+".mp3"))
需要在操作系统中建立路径。路径使用逗号,而不是“/”

计算出来。 实际上streams.filter(“480p”)给了我一个只有视频的流,没有音频,这就是为什么非类型错误,因为它没有音频对象。 通过执行streams.filter(progressive=True)解决了这个问题


嗯,逗号在这里没有用,实际上我只需要一个斜杠“/”就搞定了。使用
os.path.join
的目的是将路径的每个部分作为单独的参数传入,而不是事先将它们都与
+
连接起来。当然,我复制粘贴的原始行只删除了
.audio
部分,
def download_audio():
#try:
    b2.config(text="Please wait...")
    b2.config(state=DISABLED)
    stream = yt.streams.filter(res="480p")
    path = filedialog.askdirectory()
    if path == None:
        return
    stream[0].download(path)
    for i in os.listdir(path):
        os.rename(os.path.join(path,i),os.path.join(path,i.replace(' ','_')))
    title = yt.title.replace(' ','_')
    print(title)
    print(path)
    video = VideoFileClip(os.path.join(path,title+".mp4"))
    print(video)
    video.audio.write_audiofile(os.path.join(path,title+".mp3"))
def download_audio():
#try:
b2.config(text="Please wait...")
b2.config(state=DISABLED)
stream = yt.streams.filter(progressive=True)
path = filedialog.askdirectory()
if path == None:
    return
stream[0].download(path)
for i in os.listdir(path):
    os.rename(os.path.join(path,i),os.path.join(path,i.replace(' ','_')))
title = yt.title.replace(' ','_')
print(title)
print(path)
video = VideoFileClip(os.path.join(path+"//"+title+".mp4"))
print(video)
video.audio.write_audiofile(os.path.join(path+"//"+title+".mp3"))