首页 > 解决方案 > 我试图制作视频编辑器,它使用moviepy python从电脑获取视频,但我面临一些问题,我对此并不陌生

问题描述

def open_file():
    
    b_text.set("Loading")
    files = askopenfile(initialdir = ".",parent=root ,title="choose a video",filetype=[("Video Files","*.mp4")])
    if files:
        print("File was loaded")  

    files.without_audio().preview() 

这是我面临的错误

Traceback (most recent call last):
  File "C:\Users\felix\anaconda3\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "c:/Users/felix/Desktop/video editor/new.py", line 27, in open_file
    b=Button(root,textvariable=b_text,relief=GROOVE,bg="#232323",fg="white", command=open_file)
AttributeError: '_io.TextIOWrapper' object has no attribute 'without_audio'

标签: pythonmoviepy

解决方案


您必须VideoFileClip在预览之前执行。

该方法askopenfile选择一个文件。
执行clip = VideoFileClip(file.name)创建VideoFileClip对象。
然后就可以执行了clip.without_audio().preview()

有关详细信息,请参阅:MoviePy – 预览视频剪辑


执行代码时,我收到一条错误消息:

clip.preview 需要安装 Pygame

我必须安装pygame


下面是选择和预览视频文件的代码示例:

from tkinter.filedialog import askopenfile
from moviepy.editor import *
   
file = askopenfile(initialdir = ".", title="choose a video", filetype=[("Video Files","*.mp4")])

if file:
    print("File was loaded")

    # https://www.geeksforgeeks.org/moviepy-previewing-a-video-clip/
    # Loading video file
    clip = VideoFileClip(file.name)
    
    # previewing the clip at fps = 10
    clip.without_audio().preview(fps=10)

注意:
由于该示例是“独立”应用程序,因此我必须删除parent参数(但您应该保留parent=root参数)。


推荐阅读