#reactjs #flask #amazon-s3 #boto3
#reactjs #flask #amazon-s3 #boto3
Вопрос:
Мне нужно отображать / транслировать большие видеофайлы в reactjs. Эти файлы загружаются в частную корзину s3 пользователем с использованием react form и flask.
Я пробовал getObject
метод, но размер моего файла слишком велик. get a signed url
метод потребовал от меня загрузки файла.
Я новичок в настройке AWS-python-react. Какой наилучший / наиболее эффективный / наименее затратный подход к отображению больших видеофайлов в react?
Ответ №1:
AWS предлагает другие специальные потоковые сервисы, но если вы действительно хотите получить их с S3, вы можете получить файлы с помощью torrent, который при правильном клиенте / видеоплеере позволит вам начать их воспроизведение без необходимости загружать весь файл.
Поскольку вы упомянули, что используете Python, вы могли бы сделать это с помощью AWS SDK следующим образом:
import boto3
s3 = boto3.client('s3')
response = client.get_object_torrent(
Bucket='my_bucket',
Key='/some_prefix/my_video.mp4'
)
Объект ответа будет иметь этот формат:
{
'Body': StreamingBody()
}
Полные документы здесь.
Затем вы могли бы использовать что-то вроде webtorrent для потоковой передачи его во интерфейсе.
Следует отметить две вещи об этом подходе (цитируя документы):
- Amazon S3 не поддерживает протокол BitTorrent в регионах AWS, запущенный после 30 мая 2016 года.
- Вы можете получить торрент-файл только для объектов размером менее 5 ГБ.
Комментарии:
1. привет, спасибо. Ранее я использовал firebase. Кто-то предложил мне использовать s3 (потому что s3 дешевле firebase). Я также открыт для изучения других вариантов хранения.
2. Np. S3 как решение для хранения объектов на самом деле было хорошим и экономически эффективным предложением, но само по себе это не лучший вариант для вашего варианта использования. Не уверен в масштабах вашего проекта, но вам обязательно следует заглянуть в CloudFront, который представляет собой службу CDN, которая, помимо прочего, позволяет вам настраивать RTMP (потоковые) дистрибутивы с S3 в качестве источника. Это означает, что вы можете хранить файлы на S3 и использовать его возможности хранения, а также использовать преимущества CDN и потоковой передачи.
3. Спасибо, обязательно проверю это. Также, если может помочь дальнейший контекст, предположим, что каждый пользователь может загружать видеофайлы объемом до 30 ГБ (в месяц). И все эти видео должны отображаться в reactjs. Предположим, у меня может быть до 1000 пользователей в месяц.
4. Даже с новой информацией я по-прежнему придерживаюсь своего предыдущего ответа / комментариев.
5. Привет, видеофайл не загружается в reactjs codepen.io/drngke/pen/abNGbEg