Как извлечь аудио-трек из видео

Если вы хотите преобразовать свое видео в аудиоформат с помощью Python, то попали в нужное место. В этом уроке я покажу вам два простых метода извлечения звука из видеофайла с помощью библиотек FFmpeg и MoviePy в 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

Заключение

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

По мотивам How to Extract Audio from Video in Python

Print Friendly, PDF & Email

CC BY-NC 4.0 Как извлечь аудио-трек из видео, опубликовано К ВВ, лицензия — Creative Commons Attribution-NonCommercial 4.0 International.


Респект и уважуха

Добавить комментарий