使用Python tkinter提取视频文件中的音频

​ 本篇博客介绍如何使用Python tkinter库实现一个图形界面,通过选择视频文件,将视频中的音频分离出来,保存为AAC格式文件。

实现步骤

1. 导入所需库

import os
import tkinter as tk
from tkinter import filedialog

2. 创建应用类

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        # 添加选择视频文件按钮
        self.select_video_button = tk.Button(self)
        self.select_video_button["text"] = "选择视频文件"
        self.select_video_button["command"] = self.select_video_file
        self.select_video_button.pack(side="top")

        # 添加音频提取按钮
        self.extract_audio_button = tk.Button(self)
        self.extract_audio_button["text"] = "提取音频"
        self.extract_audio_button["state"] = "disabled"
        self.extract_audio_button["command"] = self.extract_audio
        self.extract_audio_button.pack(side="top")

        # 添加退出按钮
        self.quit = tk.Button(self, text="退出", fg="red",
                              command=self.master.destroy)
        self.quit.pack(side="bottom")

在这个类中,我们创建了一个图形界面应用程序,包含了选择视频文件、提取音频、退出三个按钮。

3. 实现选择视频文件功能

def select_video_file(self):
      # 弹出文件选择对话框,获取用户选择的视频文件路径
      self.video_path = filedialog.askopenfilename(initialdir="./",
                                                   title="选择视频文件",
                                                   filetypes=(("视频文件", "*.mp4;*.avi;*.mov"), ("所有文件", "*.*")))
      if self.video_path:
          # 激活音频提取按钮
          self.extract_audio_button["state"] = "normal"

通过调用filedialog.askopenfilename()方法,弹出文件选择对话框,获取用户选择的视频文件路径,并保存在实例变量self.video_path中。如果选择了文件,就激活音频提取按钮。

4. 实现音频提取功能

def extract_audio(self):
      # 使用FFmpeg将视频中的音频分离出来
      output_path = "output.aac"
      os.system(f"ffmpeg -i {self.video_path} -vn -acodec copy {output_path}")
      print(f"音频已经被提取到 {output_path}")
      self.extract_audio_button["state"] = "disabled"
      tk.messagebox.showinfo("提示", "音频已提取完成!")

​ 通过调用os.system()方法,使用FFmpeg将视频中的音频分离出来,并保存为AAC格式文件。最后,将音频提取按钮禁用,并使用tkinter库的messagebox.showinfo()方法弹出提示对话