Я использую django-storages
для хранения медиафайлов на Amazon S3.Я разработал интерфейс с использованием boto3 для использования Elastic Transcoder для кодирования видео или аудио файлов.Также для видеофайлов я добавлю логотип водяного знака, все еще используя Elastic Transcoder.
Поток следующий:
- Клиентское приложение загружает файл, думая, что REST API я разработал -- DONE
- Django сохраняет файл на Amazon S3. - DONE
- Если это видео или аудио, 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
Есть ли лучший способ запустить процесс кодирования только для видео или аудио файлов и только при изменении файла?