【问题标题】:Multipart upload of streaming voice to S3将流式语音分段上传到 S3
【发布时间】:2015-12-30 18:32:18
【问题描述】:

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

现在我想在录制过程中流式传输到 S3。您不能附加到 S3 文件,但有很多建议您可以在多部分上传中一个接一个地发送 5MB 块。

我无法理解 Aws-sdk-ruby V2 的文档或源代码。它似乎想要一个完整的文件并在后台管理块。

有什么线索吗?

【问题讨论】:

  • 直接与 REST API 通信并不难掌握。如果您采用这种方法,您可以以任何对您有意义的方式管理块。
  • 谢谢,我看看这些文档是否更好。但我设法使用 Pry 和文档来匹配东西。

标签: ruby file-upload amazon-s3 streaming


【解决方案1】:

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

@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)

【讨论】:

    猜你喜欢
    • 2017-11-14
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2021-06-11
    • 1970-01-01
    • 2017-05-18
    • 2016-05-22
    相关资源
    最近更新 更多