Как объединить аудио-файл с картинкой и получить видеоклип

Есть много случаев, когда вы хотите преобразовать свой аудиофайл в видео, например, загрузить аудио на YouTube или что-то подобное. В этом руководстве вы узнаете, как добавить статическое изображение в аудиофайл, чтобы сформировать видеофайл с помощью Python, используя библиотеку MoviePy.

Прежде чем мы начнем с кода, давайте установим MoviePy:

$ pip install moviepy

Откройте новый файл Python и напишите следующее:

from moviepy.editor import AudioFileClip, ImageClip

def add_static_image_to_audio(image_path, audio_path, output_path):
    """Создайте и сохраните видеофайл в `output_path` после
    объединение статического изображения, расположенного в `image_path`
    с аудиофайлом в `audio_path`"""
    # создаем объект аудиоклипа
    audio_clip = AudioFileClip(audio_path)
    # создаем объект клипа изображения
    image_clip = ImageClip(image_path)
    # используйте метод set_audio из клипа изображения, чтобы объединить звук с изображением
    video_clip = image_clip.set_audio(audio_clip)
    # укажите продолжительность нового клипа как продолжительность аудиоклипа
    video_clip.duration = audio_clip.duration
    # установить FPS на 1
    video_clip.fps = 1
    # записываем возобновляемый видеоклип
    video_clip.write_videofile(output_path)

Функция add_static_image_to_audio() делает все. Она ожидает путь изображения, путь аудио и путь выходного видео, а затем:

  • Создает экземпляр AudioFileClip() из audio_path.
  • Он также создал экземпляр ImageClip() из пути к изображению.
  • Мы добавляем звук в экземпляр ImageClip с помощью метода set_audio(), который возвращает новый клип.
  • Мы установили длительность этого нового видеоклипа равной продолжительности аудиоклипа (вы можете изменить ее на любую длину в секундах).
  • Мы также устанавливаем FPS, значение 1 означает, что есть один кадр в секунду. Кстати, это обязательно для любого видеоклипа.
  • Наконец, мы используем метод write_videofile() для сохранения полученного видеофайла.

Теперь давайте воспользуемся модулем argparse для анализа аргументов командной строки:

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="Простой скрипт Python для добавления статического изображения к аудио для создания видео")
    parser.add_argument("image", help="Папка изображений")
    parser.add_argument("audio", help="Папка аудио")
    parser.add_argument("output", help="Папка для созданного видео")
    args = parser.parse_args()
    add_static_image_to_audio(args.image, args.audio, args.output)

Отлично, давайте проверим:

$ python add_photo_to_audio.py --help

Результат:

usage: add_photo_to_audio.py [-h] image audio output

Простой скрипт Python для добавления статического изображения к аудио и
создания видео

positional arguments:
  image       Папка изображений
  audio       Папка аудио
  output      Папка для созданного видео

optional arguments:
  -h, --help  show this help message and exit

Отлично, давайте попробуем побороться с реальным изображением и аудиофайлом:

$ python add_photo_to_audio.py directed-by-robert-image.jpg "Directed-by-Robert-B.-Weide-theme.mp3" output.mp4

Файл output.mp4 появится в текущем каталоге:

Хорошо, это все на сегодня! Посмотрите полный код:

from moviepy.editor import AudioFileClip, ImageClip

def add_static_image_to_audio(image_path, audio_path, output_path):
    """Создайте и сохраните видеофайл в `output_path` после
    объединение статического изображения, расположенного в `image_path`
    с аудиофайлом в `audio_path`"""
    # создаем объект аудиоклипа
    audio_clip = AudioFileClip(audio_path)
    # создаем объект клипа изображения
    image_clip = ImageClip(image_path)
    # используйте метод set_audio из клипа изображения, чтобы объединить звук с изображением
    video_clip = image_clip.set_audio(audio_clip)
    # укажите продолжительность нового клипа как продолжительность аудиоклипа
    video_clip.duration = audio_clip.duration
    # установить FPS на 1
    video_clip.fps = 1
    # записываем возобновляемый видеоклип
    video_clip.write_videofile(output_path)

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="Простой скрипт Python для добавления статического изображения к аудио и создания видео")
    parser.add_argument("image", help="Папка изображений")
    parser.add_argument("audio", help="Папка аудио")
    parser.add_argument("output", help="Папка для созданного видео")
    args = parser.parse_args()
    add_static_image_to_audio(args.image, args.audio, args.output)

По мотивам How to Combine a Static Image with Audio in Python

Print Friendly, PDF & Email

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


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

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