Java 下载歌曲的一部分,然后播放

Java 下载歌曲的一部分,然后播放,java,amazon-web-services,audio,amazon-s3,Java,Amazon Web Services,Audio,Amazon S3,我使用的是amazon s3 bucket技术,我有一个程序可以从.wav文件的部分下载字节,例如,我会调用一个类似 getPartOfASongFile(String filename, long byteToStartAt, long byteToEndAt)` and then play it using a Clip. 只要bytestatat==0,程序就可以工作。任何高于0的值我都会得到一个 javax.sound.sampled.UnsupportedAudioFileExce

我使用的是amazon s3 bucket技术,我有一个程序可以从
.wav
文件的部分下载字节,例如,我会调用一个类似

getPartOfASongFile(String filename, long byteToStartAt, long byteToEndAt)` and then play it using a Clip. 
只要
bytestatat==0
,程序就可以工作。任何高于0的值我都会得到一个

javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file`. 
我的问题是:如果我想让ByteStatart大于零,我如何播放这个文件

这基本上是当前的计划:

getPartOfASongFile(String filename,long byteToStartAt,long byteToEndAt){
    File tempFile= null;
    try {
        tempFile = File.createTempFile(filename, ".wav");
    } catch (IOException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
    tempFile.deleteOnExit();
    FileOutputStream out=null;
    try {
        out = new FileOutputStream(tempFile);
    } catch (FileNotFoundException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    GetObjectRequest rangeObjectRequest=new GetObjectRequest("myBucketName",filename);
    rangeObjectRequest.setRange(byteToStartAt, byteToEndAt);
    try {
        IOUtils.copy(awsClient.getObject(rangeObjectRequest).getObjectContent(), out);
    } catch (AmazonClientException | IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    AudioInputStream audioInputStream=null;
    audioInputStream = AudioSystem.getAudioInputStream(tempFile);
    Clip clip = AudioSystem.getClip();

    clip.open(audioInputStream);
    clip.start();
}

发布你的程序,否则很难推测到底发生了什么。@dambros刚刚编辑了它,如果这是一个文件(我不知道你的下载是如何工作的)它必须在开始时有一些头信息,因此跳过会导致错误-您可以加载文件并从某些部分播放-否则跳过mp3或wav的第一个字节将无法发布您的程序,否则很难推测发生了什么。@dambros刚刚编辑了它,如果这是一个文件(我不知道你的下载是如何工作的)它必须在开始时有一些头信息,因此跳过会导致错误-你可以加载文件并从某个部分播放-否则跳过mp3或wav的第一个字节将不起作用