Найти тему
Свой Айтишник

Python. Создание приложения для извлечения аудио из видео файлов.

Оглавление

Введение

В данной статье мы разберем создание графического интерфейса приложения на Python для извлечения аудио из видео файлов, используя библиотеки `moviepy`, `ttkbootstrap`, `pymediainfo`, `tkinterdnd2`, а также инструмент для создания исполняемого файла - `PyInstaller`.

Внешний вид приложения
Внешний вид приложения

Мы рассмотрим шаги по созданию самого приложения, а затем обсудим, как упаковать его в exe-файл для запуска на Windows.

Шаг 1: Установка необходимых библиотек

Для работы приложения нам понадобятся следующие библиотеки:

- `moviepy`

- `ttkbootstrap`

- `pymediainfo`

- `tkinterdnd2`

- `Pillow`

- `PyInstaller`

Установить их можно с помощью pip:

-2

Шаг 2: Создание приложения

Ниже приведен полный код Python-скрипта `sound.py`, показывающего процесс извлечения аудио из видео файла с отображением прогресса и случайным выбором кадра из видео на каждой секунде. Полный код доступен в моём Telegram канале, ссылочка ниже или в шапке канала.

Импорт библиотек

Используемые библиотеки
Используемые библиотеки

- `os`: используется для работы с файловой системой.

- `threading`: позволяет запускать функции в отдельных потоках.

- `time`: используется для выполнения временных задержек.

- `random`: используется для генерации случайных чисел.

- `tkinter`: стандартная библиотека для создания графического интерфейса.

- `filedialog`: позволяет пользователю выбирать файлы.

- `moviepy.editor`: библиотека для работы с видео и аудио.

- `tkinterdnd2`: добавляет поддержку функции drag and drop.

- `ttkbootstrap`: улучшенные виджеты для tkinter.

- `pymediainfo`: позволяет извлекать параметры медиа файлов.

- `PIL`: библиотека, используемая для обработки изображений (часть Pillow).

Класс VideoConverterApp

Основной класс приложения, который включает в себя настройку интерфейса и все основные функции.

Конструктор класса

-4

Конструктор принимает корневой элемент интерфейса tkinter и вызывает метод `setup_ui` для настройки интерфейса.

Метод setup_ui

Метод setup_ui ч.1
Метод setup_ui ч.1
Метод setup_ui ч.2
Метод setup_ui ч.2

- Настройка интерфейса: Устанавливаем заголовок окна, размеры окна и тему.

- Поддержка drag and drop: Позволяет пользователю перетаскивать видеофайлы на область `Canvas`.

- Создание виджетов: Создание и размещение всех виджетов, включая кнопки, комбобокс для выбора битрейта, прогресс-бар и виджет логирования.

- Планирование обновления кадра: Метод `self.root.after(1000, self.update_video_frame)` запускает обновление кадра каждую секунду.

Методы для работы с видео и аудио

Выбор видеофайла

-7

Открывает диалоговое окно для выбора видеофайла и передает путь к файлу в метод `handle_video_file`.

Обработка выбранного файла

-8

Сохраняет путь к видеофайлу, логирует выбор файла и вызывает методы для извлечения информации о видео и обновления метки.

Извлечение информации о видео

-9

Извлекает параметры видео, такие как разрешение, размер файла, продолжительность, битрейт аудио и логирует их.

Обновление кадра каждую секунду

-10

Планирует вызов метода `display_video_frame` каждую секунду для отображения случайного кадра из видео.

Отображение случайного кадра

-11

Отображает случайный кадр из видео каждую секунду.

Конвертация аудио!

Метод для сохранения аудио

-12

Запускает процесс конвертации аудио в отдельном потоке и обновляет прогресс-бар.

Завершение приложения!

Метод для закрытия приложения

-13

Безопасно завершает все активные потоки перед закрытием приложением.

Весь код порядка 200+ строчек, поэтому не буду растягивать статью, весь код я выложу в своем Telegram канале, ссылочка будет в конце статьи.

Шаг 3. Создание exe файла

1. Установите `PyInstaller`:

pip install pyinstaller

2. Перейдите в каталог, где находится ваш `sound.py` файл.

3. Создайте файл `main.spec`, если его нет.

4. Соберите проект с использованием `spec` файла:

pyinstaller main.spec

Таким образом, вы сможете создать исполняемый файл для вашего приложения и запускать его на Windows.

Немного фото самого приложения (листайте или крутите фото):

Заключение

Мы создали графический интерфейс для извлечения аудио из видео файлов с помощью Python и упаковали его в исполняемый файл для Windows. Вы можете добавлять новые функции и улучшения в это приложение, превращая его в мощный инструмент для работы с мультимедиа файлами.

Я показал лишь малую часть функционала, далее приложение можно развивать и дорабатывать. Для удобства я выложу все исходники и сам код в свой Telegram канал. https://t.me/myit_tg

Буду очень рад вас там видеть!