import tkinter as tk

from tkinter import filedialog
from tkinter import ttk
from moviepy.editor import *
import subprocess


def select_input_file():
file_path = filedialog.askopenfilename()
input_file_entry.delete(0, tk.END)
input_file_entry.insert(0, file_path)

def select_output_folder():
folder_path = filedialog.askdirectory()
output_folder_entry.delete(0, tk.END)
output_folder_entry.insert(0, folder_path)

def convert_to_dual_mono():
input_file = input_file_entry.get()
output_folder = output_folder_entry.get()

# extract audio using MoviePy
clip = VideoFileClip(input_file)
audio = clip.audio
audio.write_audiofile(output_folder + "/audio.wav")
audio.close()
clip.close()

# load audio and convert to dual mono using ffmpeg
audio = AudioFileClip(output_folder + "/audio.wav")
audio.close()
subprocess.call(['ffmpeg', '-i', output_folder + '/audio.wav', '-ac', '1', '-channel_layout', 'mono', output_folder + '/dual_mono_audio.wav'])
progress_bar["value"] = progress_bar["maximum"]

root = tk.Tk()
root.title("Video to Dual Mono Converter")

# create input file selector
input_file_label = tk.Label(root, text="Select input file:")
input_file_label.grid(row=0, column=0)
input_file_entry = tk.Entry(root, width=50)
input_file_entry.grid(row=0, column=1)
input_file_button = tk.Button(root, text="Browse", command=select_input_file)
input_file_button.grid(row=0, column=2)

# create output folder selector
output_folder_label = tk.Label(root, text="Select output folder:")
output_folder_label.grid(row=1, column=0)
output_folder_entry = tk.Entry(root, width=50)
output_folder_entry.grid(row=1, column=1)
output_folder_button = tk.Button(root, text="Browse", command=select_output_folder)
output_folder_button.grid(row=1, column=2)

# create convert button
convert_button = tk.Button(root, text="Convert to Dual Mono", command=convert_to_dual_mono)
convert_button.grid(row=2, column=1)

# create progress bar
progress_bar = tk.ttk.Progressbar(root, orient=tk.HORIZONTAL, length=300, mode="determinate")
progress_bar.grid(row=3, column=0, columnspan=3, padx=10, pady=10)

root.mainloop()

0 comments:

Post a Comment

 
Top