Я пытаюсь разработать графическое приложение (используя библиотеки tkinter и ffmpeg-python), которое преобразует файл изображения вместе со звуком в видео. длина звука при отображении изображения. К сожалению, всякий раз, когда я пытаюсь запустить программу, я постоянно сталкиваюсь с ошибками.
Сначала это было связано с установкой библиотеки ffmpeg в диспетчере пакетов pip вместо ffmpeg-python. Я удалил предыдущий пакет, установил правильный и убедился, что другие пакеты не вызывают проблем. Используя такой короткий скрипт, библиотека работала без сбоев:
Код: Выделить всё
'''
The Error causing Statement
import ffmpeg
(
ffmpeg.input("something.mp3")
.output("output.wav")
.run()
)
'''
# When I tried to use the ffmpeg library in a graphics program within a function, unfortunately I was not able to get it to work
import tkinter as tk
from tkinter import filedialog
from tkinter import ttk
def select_image():
file_path = filedialog.askopenfilename(title="Select a file", filetypes=[("image files","*.jpg;*.png;*.gif;*.jfif;")])
print("Selected file:", file_path)
def select_audio():
file_path = filedialog.askopenfilename(title="Select a file", filetypes=[("audio files","*.mp3;*.wav;*.ogg;*.flac;*.m4a;*.acc;")])
print("Selected file:", file_path)
def create_video(image_file, audio_file, output_format):
import ffmpeg
(
ffmpeg.input(image_file, loop=1)
.input(audio_file)
.output("output" + output_format)
.run()
)
def choose_directory():
directory_path = filedialog.askdirectory(title="Select directory")
print("Selected directory:", directory_path)
root = tk.Tk()
root.title("Audio To Video Converter")
root.geometry("500x700")
title = tk.Label(root, text="Audio To Video Converter", font=('Arial', 28))
title.pack(padx=20, pady=20)
selectImage_button = tk.Button(root, text="Select image", command=select_image, height=3, width=50)
selectImage_button.pack(pady=10, padx=20)
selectAudio_button = tk.Button(root, text="Select audio", command=select_audio, height=3, width=50)
selectAudio_button.pack(pady=10, padx=20)
label1 = tk.Label(root, text="Output video format", font=('Arial', 16))
label1.pack(padx=20, pady=10)
outputFormat = ttk.Combobox(root, width=55)
outputFormat['values'] = ('.avi', '.mkv', '.mp4', '.webm')
outputFormat['state'] = 'readonly'
outputFormat.pack(pady=5, padx=20)
label2 = tk.Label(root, text="Output directory", font=('Arial', 16))
label2.pack(padx=20, pady=10)
outputDirectory_button = tk.Button(root, text="Select directory", command=choose_directory, height=3, width=50)
outputDirectory_button.pack(pady=5, padx=60)
convert_button = tk.Button(root, text="Convert", height=3, width=50, command=create_video(selectImage_button, selectAudio_button, outputFormat['values'] ))
root.mainloop()
Код: Выделить всё
Traceback (most recent call last):
File "c:\Users\Admin\Documents\konwerter\konwerter.py", line 56, in
convert_button = tk.Button(root, text="Convert", height=3, width=50, command=create_video(selectImage_button, selectAudio_button, outputFormat['values'] ))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\Admin\Documents\konwerter\konwerter.py", line 17, in create_video
.input(audio_file)
^^^^^
AttributeError: 'FilterableStream' object has no attribute 'input'
Код: Выделить всё
colored 2.2.4 customtkinter 5.2.2 darkdetect 0.8.0 ffmpeg-python 0.2.0 future 1.0.0 Gooey 1.0.8.1 packaging 24.1 pillow 10.4.0 pip 24.2 psutil 6.0.0 pyee 12.0.0 pygtrie 2.5.0 six 1.16.0 tkinterdnd2 0.4.2 typing_extensions 4.12.2 wxPython 4.2.2
Подробнее здесь: https://stackoverflow.com/questions/790 ... fmpeg-pyth