Если вы хотите преобразовать свое видео в аудиоформат с помощью Python, то попали в нужное место. В этом уроке я покажу вам два простых метода извлечения звука из видеофайла с помощью библиотек и в Python.
Прежде чем мы начнем, необходимо установить FFmpeg на вашем компьютере. Если вы используете Windows, посмотрите , где вы просто устанавливаете его и добавляете в переменную PATH. Если вы работаете в Linux, его просто установить с помощью следующих команд:
$ sudo apt update $ sudo apt install ffmpeg
Обратите внимание, что для чтения и записи видео MoviePy зависит от FFmpeg, и он автоматически установит его при первом использовании. Поэтому не стоит сильно беспокоиться, если вы не выполните описанный выше шаг и захотите использовать второй метод (например, с помощью MoviePy).
Теперь установим MoviePy:
$ pip install moviepy
Метод 1. Прямое использование FFmpeg
Этот метод включает использование встроенного модуля подпроцесса Python для соответствующей команды FFmpeg:
import subprocess
import os
import sys
def convert_video_to_audio_ffmpeg(video_file, output_ext="mp3"):
"""Преобразует видео в аудио напрямую с помощью команды `ffmpeg`
с помощью модуля подпроцесса"""
filename, ext = os.path.splitext(video_file)
subprocess.call(["ffmpeg", "-y", "-i", video_file, f"{filename}.{output_ext}"],
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT)
if __name__ == "__main__":
vf = sys.argv[1]
convert_video_to_audio_ffmpeg(vf)
В функции convert_video_to_audio_ffmpeg() мы сначала разделяем имя входного видеофайла на исходное имя файла без расширения и само расширение, поэтому мы можем получить имя выходного файла, просто добавив аудио-расширение к исходному имени. В данном случае это mp3.
Мы используем метод subprocess.call() для запуска команды FFmpeg, Флаг -y предназначен для игнорирования запроса перезаписи, а -i для указания входного видеофайла. Последний аргумент — это имя выходного файла с расширением mp3 audio, вы можете изменить его на wav, если хотите, но в моем случае это по какой-то причине привело к созданию большого аудиофайла.
Наконец, мы передаем subprocess.DEVNULL аргументу stdout и subprocess.STDOUT в stderr, чтобы мы могли отказаться от вывода FFmpeg. Вы можете запустить скрипт через:
$ python video2audio_ffmpeg.py zoo.webm
Где zoo.webm — ваш видеофайл любого формата.
Метод 2: Использование MoviePy
В этом методе мы используем довольно простую библиотеку MoviePy, которая под капотом использует FFmpeg:
import os
import sys
from moviepy.editor import VideoFileClip
def convert_video_to_audio_moviepy(video_file, output_ext="mp3"):
"""Преобразует видео в аудио с помощью библиотеки MoviePy
который использует `ffmpeg` под капотом"""
filename, ext = os.path.splitext(video_file)
clip = VideoFileClip(video_file)
clip.audio.write_audiofile(f"{filename}.{output_ext}")
if __name__ == "__main__":
vf = sys.argv[1]
convert_video_to_audio_moviepy(vf)
Здесь мы создаем экземпляр класса VideoFileClip(), а затем используем метод write_audiofile() из аудиообъекта клипа, чтобы сохранить его как аудиофайл. Используя скрипт:
$ python video2audio_moviepy.py zoo.webm
Заключение
Надеюсь, что мой небольшой урок помог вам быстро и надежно справиться со своими задачами.
По мотивам
Как извлечь аудио-трек из видео, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.
Респект и уважуха

