Python извлекаем аудио из видео. Пакет moviepy.

Всё что касается Python
Ответить
Аватара пользователя
admin
Администратор
Сообщения: 1103
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Python извлекаем аудио из видео. Пакет moviepy.

Сообщение admin » 23 дек 2020, 21:56

Если необходимо извлечь аудио дорожку из видео файла (скачал аудиокниги с youtube), то python в помощь :cool_cool:
Три строчки и все готово.

Код: Выделить всё

from moviepy.editor import * #подключаем пакет moviepy

audioclip = AudioFileClip("1.mp4") #видеофайл 1.mp4
audioclip.write_audiofile("out_audio.mp3") #извлеченная аудиодорожка в файл out_audio.mp3
Из видео файла в ~900М получился аудио ~500М, по времени ~5 мин (зависит от ПК)

При запуске *.py файла возможно вылетит ошибка, с пакетом Numpy:
RuntimeError: The current Numpy installation ('*****') fails to pass a sanity check due to a bug in the windows runtime. See this issue for more information: https://tinyurl.com/y3dm3h86

Исправляем так:

Код: Выделить всё

pip uninstall numpy
pip install numpy==1.19.3

Аватара пользователя
admin
Администратор
Сообщения: 1103
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: Python извлекаем аудио из видео пакет moviepy

Сообщение admin » 23 дек 2020, 22:52

Обработать последовательно все файлы в папке

Код: Выделить всё

import  os
from moviepy.editor import * #подключаем пакет moviepy

directory = input("Введите путь к папке:");
files = os.listdir(directory) # имена всех файлов папки в список
print('\n'.join(files)) # выводим список имен

for file in files: #обрабатываем последовательно все файлы в списке
    audioclip = AudioFileClip(directory+"\\"+file) #видеофайл 1.mp4
    audioclip.write_audiofile(directory+"\\"+file+".mp3") #извлеченная аудиодорожка в файл mp3
    print(file+".mp3")

Аватара пользователя
admin
Администратор
Сообщения: 1103
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: Python извлекаем аудио из видео. Пакет moviepy.

Сообщение admin » 29 дек 2020, 10:58

Переписал в соответствии в PEP8, дал более логичные имена переменным, навел "красоту" :-):
Можно запускать как самостоятельно так и в PyCharm

Код: Выделить всё

from moviepy.editor import *  # подключаем пакет moviepy


def audio_capture():
    print("Введите путь к папке:")
    directory = input()

    # все имена файлов папки сохраняем в список
    _list_name_files = os.listdir(directory)

    # выводим список имен файлов
    print('\n'.join(_list_name_files))

    # перебираем последовательно все файлы имена которых в списке
    for _name_file in _list_name_files:
        print("Конвертируем файл: \n" +
              _name_file)

        # извлекаем аудиодорожку
        audio = AudioFileClip(directory + "\\" + _name_file)

        # изменяем расширение на mp3 + сохраняем в введенную директорию
        audio.write_audiofile(directory + "\\" + (os.path.splitext(_name_file)[0] + ".mp3"))
    print("Конвертация файлов закончена!")


if __name__ == '__main__':
    audio_capture()


Ответить