#python #python-3.x #amazon-web-services #amazon-s3
Вопрос:
У меня в корзине s3 есть куча видео, и я хочу конвертировать их формат с помощью python, но в настоящее время я застрял на одной проблеме. Мой скрипт на python для извлечения всех объектов bucket выглядит следующим образом.
s3 = boto3.client('s3',
region_name = S3_REGION,
aws_access_key_id = S3_ACCESS_KEY_ID,
aws_secret_access_key = S3_ACCESS_SECRET_KEY)
result = s3.list_objects(Bucket = bucket_name, Prefix='videos/')
for o in result.get('Contents'):
data = s3.get_object(Bucket=bucket_name, Key=o.get('Key'))
А для преобразования видеоформата я использовал библиотеку MoviePy, которая преобразует видеоформат в mp4
import moviepy.editor as moviepy
clip = moviepy.VideoFileClip("video-529.webm")
clip.write_videofile("converted-recording.mp4")
Но проблема с этой библиотекой в том, что для нее нужен только файл, вы не можете передать объект s3 в виде файла, поэтому я не знаю, как решить эту проблему, если у кого-то есть лучшая идея для этого, пожалуйста, помогите мне .
Комментарии:
1. S3-это просто большое, тупое хранилище. Он ничего не может выполнить. Вам придется загружать, конвертировать и загружать.
2. Есть некоторые сервисы AWS, которые вы можете использовать для конвертации, преобразования и т. Д. В AWS, поэтому вам не нужно их загружать. Один пример: aws.amazon.com/blogs/networking-and-content-delivery/…
Ответ №1:
Вы правы. Библиотеки требуют, чтобы видеофайл находился на «локальном диске», поэтому вы должны использовать download_file()
вместо get_object()
.
В качестве альтернативы вы можете использовать Amazon Elastic Transcoder для перекодирования файла «как услуги», а не делать это в своем собственном коде. (Взимается дополнительная плата в зависимости от длины видео.)