gpt4 book ai didi

python - boto3 S3 对象解析

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:34 27 4
gpt4 key购买 nike

我正在尝试编写一个 Python 脚本来处理存储在 S3 上的音频数据。

我有一个正在使用的 S3 对象

def grabAudio(filename, directory):

obj = s3client.get_object(Bucket=bucketname, Key=directory+'/'+filename)

return obj['Body'].read()

使用访问数据

print(obj['Body'].read())

产生正确的音频信息。所以它可以很好地访问存储桶中的数据。

当我尝试在我的音频处理库(pydub)中使用这些数据时,它失败了:

audio = AudioSegment.from_wav(grabAudio(filename, bucketname))

Traceback (most recent call last):
File "split_audio.py", line 38, in <module>
audio = AudioSegment.from_wav(grabAudio(filename, bucketname))
File "C:\Users\jmk_m\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydub\audio_segment.py", line 544, in from_wav
return cls.from_file(file, 'wav', parameters)
File "C:\Users\jmk_m\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pydub\audio_segment.py", line 456, in from_file
file.seek(0)
AttributeError: 'bytes' object has no attribute 'seek'

从 s3 传入的对象的格式是什么?我猜是字节数组?如果是这样,有没有办法将其解析为 .wav 格式而无需保存到磁盘?我试图避免保存到磁盘。

还对替代音频处理库开放。

最佳答案

感谢 Linas 链接了类似的问题,并感谢 Jiaaro 的回答。

 import io
s = io.BytesIO(y['data'])
AudioSegment.from_file(s).export(x, format='mp3')

允许我直接从存储桶中拉入内存

obj = s3client.get_object(Bucket=bucketname, Key=customername+'/'+filename)

data = io.BytesIO(obj['Body'].read())
audio = AudioSegment.from_file(data)

关于python - boto3 S3 对象解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48997852/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com