将流式语音的多部分上传到S3

时间:2015-10-02 14:05:43

标签: ruby file-upload amazon-s3 streaming

我设法使用webrtc从浏览器捕获语音,MP3编码客户端,并通过websocket流式传输到heroku上的Ruby / Faye / Puma。这很好,因为长时间录制后没有上传步骤。

现在我想在录制过程中流式传输到S3。您无法附加到S3文件,但有很多建议您可以在multipartupload中逐个发送5MB块。

我无法理解Aws-sdk-ruby V2的文档或来源。它似乎想要一个完整的文件并在引擎盖下管理大块。

任何线索?

1 个答案:

答案 0 :(得分:0)

我设法搞清楚但似乎有点不稳定。对象层次结构遍布整个商店。毫无疑问,我做错了。

@s3 = Aws::S3::Resource.new()
@bucket = @s3.bucket(bucket_name)
@object = @bucket.object(file_name)
@upload = @s3.client.create_multipart_upload({bucket: bucket_name, key: @object.key})

part1 = {data: "my 1st 5MB chunk", part_number: 1}
part1[:output] = @s3.client.upload_part(body: part1[:data], bucket: bucket_name, key: @object.key, part_number: part1[:part_number], upload_id:@upload.upload_id)
part1[:etag] = part[:output][:etag]


part2 = {data: "my final chunk of any size", part_number: 2}
part2[:output] = @s3.client.upload_part(body: part2[:data], bucket: bucket_name, key: @object.key, part_number: part2[:part_number], upload_id:@upload.upload_id)
part2[:etag] = part[:output][:etag]

@object.multipart_upload(@upload.upload_id).complete(compute_parts: true)