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