Я использую django-storages
для хранения медиафайлов на Amazon S3. Я разработал интерфейс с использованием boto3 для использования Elastic Transcoder для кодирования видео или аудиофайлов. Также для видеофайлов я добавлю логотип водяного знака, используя Elastic Transcoder.
Поток следующий:
- Клиентское приложение загружает файл, используя REST API, который я разработал — ВЫПОЛНЕНО
- Django сохраняет файл на Amazon S3 — ГОТОВО
- Если это видео или аудио, Django запустит задание Amazon Elastic Transcoder для кодирования файла. Выходной файл будет добавлен по другому пути в том же сегменте S3.
- Используя Amazon SNS, Django получит уведомление, когда закодированный файл будет готов.
Для запуска процесса кодирования я думал использовать файл post_save
. Таким образом, я мог проверить, загружен ли файл, а затем запустить Amazon Elastic Transcoder. Пример:
@receiver(post_save, sender=MyModel)
def encode_file(sender, instance, created, **kwargs):
if instance.content_type in ['video'] and instance.file:
encode_file(instance.file) # Launch Amazon Elastic Transcoder
Есть ли лучший способ запустить процесс кодирования только для видео или аудио файлов и только при изменении файла?