如何将AWS Kinesis Video Stream GetMedia API输出解码为mp3 / wav?

时间:2019-03-18 19:09:55

标签: python-3.x amazon-web-services amazon-kinesis amazon-kinesis-agent apache-camel-aws-kinesis

我现在使用GetMedia API通过AWS Connect服务将数据提取到(Kinesis Video Stream)KVS,能够提取有效负载,但是如何将输出转换为mp3 / wav?我想将此输出提取到AWS Transcribe服务,以获取AWS Connect服务提取到KVS的音频呼叫的文本格式。

以下代码的有效负载的输出类似于:

00#AWS_KINESISVIDEO_CONTINUATION_TOKEND \ x87 .... \ x1faudio / L16; rate = 8000; channels = 1; \ x12T \ xc ...... 00“ AWS_KINESISVIDEO_MILLIS_BEHIND_NOWD \ x87 \ x10 \ x00 \ x00 \ x074564302g \ xc8 \ x10 \ x00 \ x00 ^ E \ xa3 \ x10 \ x00 \ x00#AWS_KINESISVIDEO_CONTINUATION_TOKEND \ x87 \ x10 \ x00 \ x00 / 91343852333181432506572546233025969376791063'

注意:响应时间过长,因此请粘贴其中一些。

import json
import boto3

kinesis_client = boto3.client('kinesisvideo', region_name='us-east-1')

response = kinesis_client.get_data_endpoint(
    StreamARN='arn:aws:kinesisvideo:us-east-1:47...,
    APIName='GET_MEDIA')

t = response['DataEndpoint']
video_client = boto3.client('kinesis-video-media', endpoint_url=t, region_name='us-east-1')
stream = video_client.get_media(
    StreamARN='arn:aws:kinesisvideo:us-east-1:47...',
    StartSelector={'StartSelectorType': 'EARLIEST'})

streamingBody = stream['Payload']
print(streamingBody.read())

请建议如何将有效负载输出转换为mp3 / wav等。

1 个答案:

答案 0 :(得分:1)

我面临着同样的问题,我可以将有效负载作为原始文件导出到S3,但是当我收听它时,它像被加密的对话一样无法正常听见。

我只是将有效负载保存到文件中。

f = open("myAudio.wav", 'w+b')
f.write(stream['Payload'].read())
f.close()