Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Практические руководства
    • Все руководства
      • Публикация обновлений для игр с помощью Cloud CDN
      • Создание SAP-программы в Yandex Cloud
      • Развертывание сервера Minecraft в Yandex Cloud
      • Развертывание мультиплеер-сервера для GTA V в Yandex Cloud
      • Конвертация видео в GIF на Python

В этой статье:

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Подготовьте ресурсы
  • Создайте API-функцию
  • Создайте функцию-конвертер
  • Создайте триггер
  • Проверьте работу приложения
  • Создайте задачу
  • Посмотрите статистику очереди
  • Посмотрите логи функции
  • Получите ссылку на GIF-файл
  • Как удалить созданные ресурсы
  1. Прикладные решения
  2. Прочее
  3. Конвертация видео в GIF на Python

Конвертация видео в GIF на Python

Статья создана
Yandex Cloud
Обновлена 17 марта 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Подготовьте ресурсы
  • Создайте API-функцию
  • Создайте функцию-конвертер
  • Создайте триггер
  • Проверьте работу приложения
    • Создайте задачу
    • Посмотрите статистику очереди
    • Посмотрите логи функции
    • Получите ссылку на GIF-файл
  • Как удалить созданные ресурсы

Вы создадите видеоконвертер с использованием утилиты FFmpeg и сервиса Yandex Message Queue. Руководство предназначено для пользователей Linux и macOS.

Смотреть видео на YouTube.

Чтобы создать приложение:

  1. Подготовьте облако к работе.
  2. Подготовьте ресурсы.
  3. Создайте API-функцию.
  4. Создайте функцию-конвертер.
  5. Создайте триггер.
  6. Проверьте работу приложения.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

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

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входит:

  • плата за вызовы функций (см. тарифы Yandex Cloud Functions);
  • плата за выполнение запросов к базе данных (см. тарифы Yandex Managed Service for YDB);
  • плата за хранение данных в бакете (см. тарифы Yandex Object Storage).

Подготовьте ресурсыПодготовьте ресурсы

  1. Скачайте архив с файлами, необходимыми для создания видеоконвертера.

  2. Создайте сервисный аккаунт с именем ffmpeg-sa и назначьте ему следующие роли:

    • ymq.reader;
    • ymq.writer;
    • lockbox.payloadViewer;
    • storage.viewer;
    • storage.uploader;
    • ydb.admin;
    • functions.functionInvoker.
  3. Создайте статический ключ для сервисного аккаунта. Сохраните Идентификатор ключа и Ваш секретный ключ.

  4. Создайте секрет с именем ffmpeg-sa-secret в Yandex Lockbox. В блоке Версия задайте:

    • Ключ — ACCESS_KEY_ID, значение — Идентификатор ключа из предыдущего шага.
    • Ключ — SECRET_ACCESS_KEY, значение — Ваш секретный ключ из предыдущего шага.

    Сохраните Идентификатор секрета из блока Информация о секрете.

  5. Создайте очередь сообщений с именем converter-queue в Yandex Message Queue. Сохраните URL очереди из блока Общая информация.

  6. Создайте базу данных YDB в режиме Serverless. Сохраните Эндпоинт из блока Document API эндпоинт.

  7. Создайте таблицу в базе данных:

    • Имя — tasks.
    • Тип таблицы — Документная таблица.
    • Колонки — одна колонка с именем task_id типа String. Установите атрибут Ключ партицирования.
  8. Создайте бакет с ограниченным доступом в Yandex Object Storage.

Создайте API-функциюСоздайте API-функцию

В функции реализуется API, с помощью которого можно выполнять следующие действия:

  • convert — передать видео для конвертации. Функция записывает задачу в таблицу tasks с помощью Document API.
  • get_task_status — узнать статус выполнения задачи. Функция проверяет, выполнена ли задача, и возвращает ссылку на GIF-файл.
Консоль управления
  1. Создайте функцию с именем ffmpeg-api.

  2. Создайте версию функции:

    1. Создайте файл requirements.txt и укажите в нем библиотеку:

      boto3
      
    2. Создайте файл index.py и вставьте в него содержимое файла ffmpeg-api.py из архива.

    3. Укажите следующие параметры:

      • Среда выполнения — python37.
      • Точка входа — index.handle_api.
      • Таймаут — 5.
      • Сервисный аккаунт — ffmpeg-sa.
    4. Добавьте переменные окружения:

      • DOCAPI_ENDPOINT — Эндпоинт из конфигурации базы данных.
      • SECRET_ID — Идентификатор секрета Yandex Lockbox.
      • YMQ_QUEUE_URL — URL очереди Message Queue.

Создайте функцию-конвертерСоздайте функцию-конвертер

Функция-конвертер запускается с помощью триггера и выполняет обработку видео, а также отмечает результат выполнения в таблице tasks.

Для преобразования видео используется утилита FFmpeg. Размер исполняемого файла FFmpeg более 70 мегабайт. Чтобы загрузить его вместе с кодом функции, подготовьте ZIP-архив и загрузите его через Object Storage. Подробнее о форматах загрузки кода.

Консоль управления
  1. Создайте функцию с именем ffmpeg-converter.

  2. Подготовьте ZIP-архив src.zip со следующими файлами:

    • Файл requirements.txt:

      boto3
      requests
      
    • Файл index.py с содержимым файла ffmpeg-converter.py из архива.

    • Исполняемый файл FFmpeg. На официальном сайте FFmpeg, в разделе Linux Static Builds, загрузите архив с 64-битной версией FFmpeg и сделайте файл исполняемым, выполнив команду chmod +x ffmpeg.

  3. Загрузите архив src.zip в бакет, созданный ранее.

  4. Создайте версию функции:

    1. Укажите следующие параметры:

      • Среда выполнения — python37.
      • Способ — способ загрузки Object Storage.
      • Бакет — имя созданного ранее бакета.
      • Объект — src.zip.
      • Точка входа — index.handle_process_event.
      • Таймаут — 600.
      • Память — 2048 МБ.
      • Сервисный аккаунт — ffmpeg-sa.
    2. Добавьте переменные окружения:

      • DOCAPI_ENDPOINT — Эндпоинт из конфигурации базы данных;
      • SECRET_ID — Идентификатор секрета Yandex Lockbox;
      • YMQ_QUEUE_URL — URL очереди Message Queue;
      • S3_BUCKET — имя бакета, созданного ранее.

Создайте триггерСоздайте триггер

Обработка очереди сообщений выполняется с помощью триггера для Message Queue. Он вызывает функцию-конвертер при поступлении сообщений в очередь converter-queue.

Консоль управления
  1. В консоли управления перейдите в каталог, в котором хотите создать триггер.
  2. Выберите сервис Cloud Functions.
  3. Перейдите на вкладку Триггеры.
  4. Нажмите кнопку Создать триггер.
  5. В блоке Базовые параметры:
    • Введите имя триггера — ffmpeg-trigger.
    • В поле Тип выберите Message Queue.
  6. В блоке Настройки сообщений Message Queue выберите очередь сообщений converter-queue и сервисный аккаунт c правами на чтение из нее — ffmpeg-sa.
  7. В блоке Настройки функции:
    • Выберите функцию, которую будет вызывать триггер — ffmpeg-converter.
    • Укажите тег версии функции — $latest.
    • Укажите сервисный аккаунт, от имени которого будет вызываться функция — ffmpeg-sa.
  8. Нажмите кнопку Создать триггер.

Проверьте работу приложенияПроверьте работу приложения

Создайте задачуСоздайте задачу

Консоль управления
  1. В консоли управления выберите каталог, в котором находится функция ffmpeg-api.

  2. Выберите сервис Cloud Functions.

  3. Выберите функцию ffmpeg-api.

  4. Перейдите на вкладку Тестирование.

  5. В поле Входные данные введите:

    {"action":"convert", "src_url":"<ссылка_на_видео>"}
    

    Где <ссылка_на_видео> — ссылка на сохраненный на Яндекс Диске видеофайл в формате MP4.

  6. Нажмите кнопку Запустить тест.

  7. В поле Ответ функции отобразится идентификатор задачи:

    { "task_id": "c4269ceb-8d3a-40fe-95f0-84cf********" }
    

Посмотрите статистику очередиПосмотрите статистику очереди

После создания задачи число сообщений в очереди увеличивается на один и срабатывает триггер. Проверьте, что сообщения поступают в очередь и обрабатываются. Для этого посмотрите статистику очереди.

Консоль управления
  1. В консоли управления выберите каталог, в котором находится очередь converter-queue.
  2. Выберите сервис Message Queue.
  3. Выберите очередь converter-queue.
  4. В блоке Общая информация отображается количество сообщений в очереди и обработке.
  5. Перейдите в раздел Мониторинг. Посмотрите графики Overall queue stats.

Посмотрите логи функцииПосмотрите логи функции

Триггер должен вызывать функцию-конвертер для каждого сообщения в очереди. Чтобы проверить, что функция вызывается, посмотрите ее логи.

Консоль управления
  1. В консоли управления выберите каталог, в котором находится функция ffmpeg-converter.
  2. Выберите сервис Cloud Functions.
  3. Выберите функцию ffmpeg-converter.
  4. Перейдите на вкладку Логи и укажите период, за который хотите их посмотреть.

Получите ссылку на GIF-файлПолучите ссылку на GIF-файл

Консоль управления
  1. В консоли управления выберите каталог, в котором находится функция ffmpeg-api.

  2. Выберите сервис Cloud Functions.

  3. Выберите функцию ffmpeg-api.

  4. Перейдите на вкладку Тестирование.

  5. В поле Входные данные введите запрос:

    {"action":"get_task_status", "task_id":"<идентификатор_задачи>"}
    
  6. Нажмите кнопку Запустить тест.

  7. Если конвертация видео в GIF-файл не завершилась, в поле Ответ функции отобразится ответ:

    {
        "ready": false
    }
    

    В противном случае вы получите ссылку на GIF-файл:

    {
        "ready": true,
        "gif_url": "https://storage.yandexcloud.net/<имя_бакета>/1b4db1a6-f2b2-4b1c-b662-37f7********.gif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=qxLftbbZ91U695ysemyZ%2F202********ru-central1%2Fs3%2Faws4_request&X-Amz-Date=20210831T110351Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=f4a5fe7848274a09be5b221fbf8a9f6f2b385708cfa351861a4e69df********"
    }
    

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы:

  1. Удалите очередь converter-queue.
  2. Удалите базу данных.
  3. Удалите все объекты из бакета.
  4. Удалите бакет.
  5. Удалите функции ffmpeg-api и ffmpeg-converter.
  6. Удалите триггер ffmpeg-trigger.

Была ли статья полезна?

Предыдущая
Развертывание мультиплеер-сервера для GTA V в Yandex Cloud
Следующая
Все руководства
Проект Яндекса
© 2025 ООО «Яндекс.Облако»