Я настроил конвейер, в котором я транслирую потоковое видео в Kinesis Video Stream (KVS), который отправляет кадры в Amazon Rekognition для распознавания лиц, а затем отправляет их в Kinesis Data Stream (KDS). Наконец, KDS отправляет результаты в лямбду.
Для кадра, в котором было выполнено распознавание лиц, я получаю JSON следующего формата: https://docs.aws.amazon.com/rekognition/latest/dg/streaming-video-kinesis-output-reference.html
Моя цель: Используя это JSON, я как-то хочу получить представление изображения кадра, который был записан KVS.
Что я пробовал:
Это JSON дает мне номер фрагмента.
Я использую этот номер фрагмента и вызываю get_media_for_fragment_list
Приведенный выше вызов возвращает ключ с именем Payload в ответ.
Я пытался каким-то образом отобразить эту полезную нагрузку в изображение.
Однако я не могу делать это каждый раз, так как не знаю, как разобраться в этом полезном грузе и расшифровать его.
Ниже приведен фрагмент кода.
def getFrameFromFragment(fragment):
client = boto3.client('kinesis-video-archived-media',endpoint_url=data_endpoint_for_kvs)
response = client.get_media_for_fragment_list(
StreamName='kvs1',
Fragments=[
fragment,
]
)
payload = response['Payload']
print(payload.read())
Как использовать эту полезную нагрузку для получения изображения?
Мне известны парсеры, которые существуют в Java: https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-renderer.html
Однако я хотел бы узнать о решении в Python.
В случае, если мое утверждение вопроса неверно или не имеет смысла, не стесняйтесь спрашивать меня об этом подробнее вопрос.
Спасибо за помощь. :)