Как конвертировать MP4 в MP3 используя Python 3


23 мая 2021


Конвертация MP4 файлов в MP3 с Python 3

В Python 3 реализованы библиотеки для конвертации mp4 файлов в mp3 аудиодорожку. В этой статье будет рассмотрено несколько таких реализаций на примерах. Хоть в статье описаны 2 формата, сами библиотеки поддерживают намного больше.

 

moviepy

Для редактирования видео существует библиотека moviepy. Одна из возможностей этой библиотеки - получение аудиодорожки с последующим сохранением файла. Библиотека устанавливается отдельно через следующую команду:

pip install moviepy

У библиотеки moviepy есть основной класс для работы с видео - VideoFileClip. При создании объекта этого класса так же создается объект (класс AudioClip) содержащий аудиодорожку. Обратится к этому объекту можно через атрибут 'audio'. Функции, которая выполнит конвертацию видео формата 'mp4' в 'mp3' будет выглядеть следующим образом:

from moviepy.editor import VideoFileClip
 
def converttomp3(mp4file, mp3file):
    video=VideoFileClip(mp4file)
    # получаем аудиодорожку
    audio=video.audio
    # сохраняем аудио файл
    audio.write_audiofile(mp3file)
    # уничтожаем объекты 
    # что бы не было ошибок
    audio.close()
    video.close()
 
converttomp3('video.mp4', 'audio.mp3')

Конвертация MP4 файлов в MP3 с Python 3 с moviepy

В метод 'write_audiofile()' можно передать дополнительные параметры. Например fps, bitrate и codec. Так, например, можно установить битрейт (в moviepy битриейт может не совпадать с конечным файлом):

audio.write_audiofile(mp3file, bitrate='320k')

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

 

 

ffmpeg

Самый популярный и надежный способ конвертации видео в любой другой формат - библиотека 'ffmpeg'. Она не относится конкретно к Python, но мы можем совместить их работу через subprocess. 

Установка ffmpeg может отличаться в зависимости от ОС. На ubuntu ее можно установить так:

sudo apt install ffmpeg

В Python есть модуль 'subprocess', который входит в базовые модули. Его основная задача - запуск процессов и получение данных с них. В нашем примере это просто запуск консольной программы 'ffmpeg' и получение информации на выводе.

Пример скрипта, который конвертирует файл c битрейтом 320:

import subprocess

command = "ffmpeg -i video.mp4 -b:a 320k audio.mp3"
subprocess.call(command, shell=True)

Конвертация MP4 файлов в MP3 с Python 3 с ffmpeg

 

converter

Еще один популярны способ конвертации файлов - через 'converter'(работает с Python 3.7+). Этот пакет не будет работать на Windows. Сам он представляет собой обертку (wrapper) над ffmpeg, поэтому его установка все равно понадобится. Установить пакет мы можем следующим образом:

pip install PythonVideoConverter

Выполнить конвертацию аналогично предыдущим примерам можно так:

from converter import Converter

conv = Converter()
convert = conv.convert('video.mp4', 'audio.mp3', {
    'format': 'mp3',
    'audio': {
        'codec': 'mp3',
        'samplerate': 320,
        },
    })

for timecode in convert:
    print(f'\rConverting ({timecode:.2f}) ...')

В случае Windows вы увидите ошибку так как в ней не реализован сигнал 'SIGVTALRM':

  • AttributeError: module 'signal' has no attribute 'SIGVTALRM' 

...

Теги: #python


Каналы
Telegram FixMyPc Telegram Лента FixMyPC RSS Rss
Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, приобретённого опыта и лучшие практики в системном администрировании и программировании.