Программное превращение изображений в слайд-шоу с помощью Python

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

Создание видео слайд-шоу довольно просто и понятно с помощью видеоредакторов с пользовательским интерфейсом. Однако, когда вам нужно создать несколько видеороликов, все становится повторяющимся и ручным. Именно здесь использование Python для программного создания слайд-шоу может стать мощным инструментом и сэкономить вам часы работы. В конце концов, мы, пользователи Python, любим все автоматизировать, не так ли?

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

Необходимые условия

  • Python 3 или выше

  • Ключ API Shotstack Shotstack предоставляет облачный API для редактирования видео.
    API. Рендеринг видео требует больших ресурсов и может занять несколько часов для редактирования
    и создание видео. Облачная инфраструктура API-интерфейса редактирования Shotstack позволяет одновременно рендерить несколько
    видео за считанные минуты.

В этом уроке мы будем использовать Shotstack Python SDK. Вы можете зарегистрироваться
бесплатную учетную запись разработчика, чтобы получить ключ API Shotstack.

Основы конфигурирования

Мы сделали исходный код общедоступным в демо-репозитории Shotstack Python. Ознакомьтесь с этой и другими Python
демо-версии здесь.

git clone https://github.com/shotstack/python-demos.git

Вход в полноэкранный режим Выход из полноэкранного режима

Установите зависимости, включая Shotstack Python SDK:

pip3 install -r requirements.txt
Войдите в полноэкранный режим Выйти из полноэкранного режима

Установите ключ API в качестве переменной окружения (Linux/Mac):

set SHOTSTACK_KEY=your_key_here
Войдите в полноэкранный режим Выйти из полноэкранного режима

или, если используется Windows (Убедитесь, что добавили SHOTSTACK_KEY в путь):

set SHOTSTACK_KEY=your_key_here
Войти в полноэкранный режим Выйти из полноэкранного режима

Замените ваш_ключ_здесь на предоставленный вам ключ API песочницы, который является бесплатным для тестирования и разработки.

Создание простого видео слайд-шоу с помощью Python

В конце этого урока вы создадите следующее видео слайд-шоу с помощью Python:

Импортирование необходимых модулей

Давайте импортируем необходимые модули для проекта. Мы будем использовать Shotstack Python SDK для редактирования и рендеринга нашего видео.
Вы можете посмотреть эту страницу документации, если хотите сначала узнать о SDK.

import shotstack_sdk as shotstack
import os

from shotstack_sdk.model.soundtrack  import Soundtrack
from shotstack_sdk.model.image_asset import ImageAsset
from shotstack_sdk.api               import edit_api
from shotstack_sdk.model.clip        import Clip
from shotstack_sdk.model.track       import Track
from shotstack_sdk.model.timeline    import Timeline
from shotstack_sdk.model.output      import Output
from shotstack_sdk.model.edit        import Edit
Вход в полноэкранный режим Выход из полноэкранного режима

Настройка клиента API

Давайте настроим клиент с URL и ключом API. Так мы сможем проверить, правильно ли был задан SHOTSTACK_KEY в предыдущем шаге.
шаг.

host = "https://api.shotstack.io/stage"

if os.getenv("SHOTSTACK_HOST") is not None:
    host =  os.getenv("SHOTSTACK_HOST")

configuration = shotstack.Configuration(host = host)

if os.getenv('SHOTSTACK_KEY') is None:
    sys.exit("API Key is required. Set using: export SHOTSTACK_KEY=your_key_here")  

configuration.api_key['DeveloperKey'] = os.getenv('SHOTSTACK_KEY')

with shotstack.ApiClient(configuration) as api_client:
    api_instance = edit_api.EditApi(api_client)
Вход в полноэкранный режим Выход из полноэкранного режима

Добавление изображений для слайд-шоу

Давайте определим массив изображений для использования в нашем слайд-шоу. Изображения должны быть размещены где-то в Интернете и доступны
через общедоступный или подписанный URL. Мы будем использовать следующие изображения из библиотеки Pexels. Вы можете заменить их на
свои собственные URL-адреса изображений.

images = [
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate1.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate2.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate3.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate4.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate5.jpg"
          ]
Войдите в полноэкранный режим Выход из полноэкранного режима

Настройка слоя видео

Клип определяется как тип актива в Shotstack. Мы можем настраивать различные атрибуты, такие как длина и время начала. Адрес

длина определяется для каждого клипа

clips  = []
start  = 0.0
length = 3.0
Вход в полноэкранный режим Выход из полноэкранного режима

Добавление звука в слайд-шоу

Мы используем модель SDK Shotstack.Soundtrack для установки URL аудиофайла и эффекта громкости fadeInFadeOut. Узнайте больше
о модели soundtrack здесь. Аналогично изображениям, вы можете добавить URL-адрес mp3. Мы будем использовать один из них из библиотеки Pixabay.
библиотеки.

soundtrack = Soundtrack(
    src     = "https://cdn.pixabay.com/audio/2022/03/23/audio_07b2a04be3.mp3",
    effect  = "fadeInFadeOut",
    volume  = 1.0
)
Вход в полноэкранный режим Выход из полноэкранного режима

Комбинирование изображений для создания видео

Давайте используем наши изображения для создания клипов. Мы будем выполнять итерации по массиву images
и создавать клипы, определяя время начала, длину и эффект по умолчанию. Мы используем модель Shotstack.ImageAsset, чтобы
для установки URL изображения, а модель Shotstack.Clip для создания свойств воспроизведения клипа и добавления их в наш массив clips.
массив, который мы создали ранее.

for image in images:
    imageAsset = ImageAsset(src = image)

    clip    = Clip(
        asset   = imageAsset,
        start   = start,
        length  = length,
        effect  = "zoomIn"
    )

    start = start + length
    clips.append(clip)
Вход в полноэкранный режим Выход из полноэкранного режима

Слайды начинаются сразу после предыдущего. Для первого изображения мы по умолчанию установим start равным 0, чтобы оно начало
воспроизведение сразу же. Каждое изображение будет появляться в видео в течение 3 секунд, которые мы определили ранее.

Эффект zoomIn придает эффект всем изображениям. Ниже перечислены все эффекты движения, которые вы можете использовать для улучшения
слайд-шоу:

  • zoomIn — медленное увеличение
  • zoomOut — медленное уменьшение масштаба
  • slideLeft — медленное скольжение (панорамирование) влево
  • slideRight — медленное скольжение (панорамирование) вправо
  • slideUp — медленное скольжение (панорамирование) вверх
  • slideDown — медленное скольжение (панорамирование) вниз

Добавление клипов на временную шкалу

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

for image in images:
    imageAsset = ImageAsset(src = image)

    clip    = Clip(
        asset   = imageAsset,
        start   = start,
        length  = length,
        effect  = "zoomIn"
    )

    start = start + length
    clips.append(clip)
Вход в полноэкранный режим Выход из полноэкранного режима

Теперь мы добавим только что созданные клипы на дорожку. Затем поместите дорожку на временную шкалу вместе со звуковой дорожкой. Мы используем
Shotstack.Track из SDK и Shotstack.Timeline:

Настройка вывода

Наконец, мы настраиваем формат вывода и добавляем временную шкалу и вывод для
создания редактирования. Мы используем модели Shotstack.Output и Shotstack.Edit.

output = Output(
    format      = "mp4",
    resolution  = "sd",
    fps         = 30.0
)

edit = Edit(
    timeline = timeline,
    output   = output
)
Вход в полноэкранный режим Выход из полноэкранного режима

Отправка редактирования в Shotstack API

Наконец, мы отправляем данные в API видеомонтажа для обработки и рендеринга. Shotstack SDK позаботится о том, чтобы
преобразовании наших объектов в JSON, включении нашего ключа в заголовок запроса и отправке всего в API.

try:
    api_response = api_instance.post_render(edit)

    message = api_response['response']['message']
    id = api_response['response']['id']

    print(f"{message}n")
    print(">> Now check the progress of your render by running:")
    print(f">> python examples/status.py {id}")
except Exception as e:
    print(f"Unable to resolve API call: {e}")
Вход в полноэкранный режим Выход из полноэкранного режима

Окончательный код

import shotstack_sdk as shotstack
import os

from shotstack_sdk.model.soundtrack  import Soundtrack
from shotstack_sdk.model.image_asset import ImageAsset
from shotstack_sdk.api               import edit_api
from shotstack_sdk.model.clip        import Clip
from shotstack_sdk.model.track       import Track
from shotstack_sdk.model.timeline    import Timeline
from shotstack_sdk.model.output      import Output
from shotstack_sdk.model.edit        import Edit

if __name__ == "__main__":
    host = "https://api.shotstack.io/stage"

    if os.getenv("SHOTSTACK_HOST") is not None:
        host =  os.getenv("SHOTSTACK_HOST")

    configuration = shotstack.Configuration(host = host)

    if os.getenv('SHOTSTACK_KEY') is None:
        sys.exit("API Key is required. Set using: export SHOTSTACK_KEY=your_key_here")  

    configuration.api_key['DeveloperKey'] = os.getenv('SHOTSTACK_KEY')

    with shotstack.ApiClient(configuration) as api_client:
        api_instance = edit_api.EditApi(api_client)

        images = [
           "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate1.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate2.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate3.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate4.jpg",
          "https://shotstack-assets.s3.ap-southeast-2.amazonaws.com/images/realestate5.jpg",
          "https://images.pexels.com/photos/2062426/pexels-photo-2062426.jpeg",
          "https://images.pexels.com/photos/2079246/pexels-photo-2079246.jpeg"
        ]

        clips  = []
        start  = 0.0
        length = 1.5

        soundtrack = Soundtrack(
            src     = "https://cdn.pixabay.com /audio/2022/03/23/audio_07b2a04be3.mp3",
            effect  = "fadeInFadeOut",
            volume  = 1.0,
        )

        for image in images:
            imageAsset = ImageAsset(src = image)

            clip    = Clip(
                asset   = imageAsset,
                start   = start,
                length  = length,
                effect  = "zoomIn"
            )

            start = start + length
            clips.append(clip)

        track = Track(clips = clips)

        timeline = Timeline(
            background = "#000000",
            soundtrack = soundtrack,
            tracks     = [track]
        )

        output = Output(
            format      = "mp4",
            resolution  = "sd",
            fps         = 30.0
        )

        edit = Edit(
            timeline = timeline,
            output   = output
        )

        try:
            api_response = api_instance.post_render(edit)

            message = api_response['response']['message']
            id = api_response['response']['id']

            print(f"{message}n")
            print(">> Now check the progress of your render by running:")
            print(f">> python examples/status.py {id}")
        except Exception as e:
            print(f"Unable to resolve API call: {e}")
Вход в полноэкранный режим Выход из полноэкранного режима

Запуск скрипта

Используйте команду python для запуска сценария.

python3 examples/images.py
Вход в полноэкранный режим Выход из полноэкранного режима

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

Для этого вы можете запустить другой скрипт, включенный в наш образец
repo:

python3 examples/status.py {renderId}
Вход в полноэкранный режим Выйти из полноэкранного режима

Замените {renderId} на ID, полученный из первой команды. Повторно запускайте скрипт status.py каждые 4-5 секунд, пока
пока не будет возвращен URL видео или не появится сообщение об ошибке.

Доступ к отрендеренным видео

Вы можете просмотреть свои отрендеренные видео в приборной панели Shotstack в разделе Renders. Видео на серверах Shotstack будут удалены
через 24 часа. Вы можете дополнительно настроить пользовательское место назначения, например YouTube, Amazon
S3 и т.д… Подробнее о местах назначения
здесь.

Заключительные мысли

Это руководство должно было дать вам базовое понимание того, как программно редактировать и создавать несколько видеороликов
используя Python и API редактирования видео Shotstack.

Вы также можете добавлять другие динамические активы, такие как текст, html теги и многое другое, которые можно программно заменять, используя

Это позволяет полностью автоматизировать процесс редактирования видео для различных случаев использования видео, таких как недвижимость, автомобилестроение, маркетинг, спортивные моменты и т.д. Архитектура API Shotstack позволяет легко интегрировать видео в ваше приложение. Смотрите наши другие обучающие статьи о
автоматизации работы с видео с помощью Python.

Оцените статью
devanswers.ru
Добавить комментарий