有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaAmazonS3更快地加载音乐文件

我需要从AmazonS3存储桶下载(或可能流式传输)一首歌曲。问题是,如果歌曲的长度是270秒,我想在歌曲的150秒开始下载/流,然后从那里播放

如何使用AmazonS3Web服务和JavaEEServlet技术来实现这一点


共 (1) 个答案

  1. # 1 楼答案

    使用AWS Java SDK,应该使用AmazonS3Client,并使用GetObjectRequest的实例对其调用getObject。创建请求时,使用要获取的字节范围调用setRange。这将让你在不下载整个文件的情况下获得文件的一部分getObject()返回一个S3对象,您可以使用它将文件内容流式传输到音乐播放器或本地文件或任何您想要的内容

    有两个棘手的部分:

    一个棘手的部分是,你可能还需要歌曲的头字节。例如,如果文件是MP3格式,则需要MP3 header。您可以使用上面相同的方法获取头的字节范围

    另一个棘手的部分是如何确定一个文件中的字节偏移量(从歌曲开始的秒数)。关于这一点,见this question。通过以字节为单位获取整个文件大小(请参见getObjectMetadata),除以歌曲的总长度(以秒为单位),然后乘以偏移下载的秒数,可以轻松估计字节偏移量