Используя AWS Java SDK, вы должны использовать AmazonS3Client и позвонить по телефону getObject на экземпляр GetObjectRequest. При создании запроса звоните setRange с байтом диапазона, чтобы получить. Это позволит вам получить часть файла без загрузки всего. getObject()
возвращает объект S3Object, который вы можете использовать для потоковой передачи содержимого файла в музыкальный проигрыватель или локальный файл или что угодно.
Есть два Хитрость:
Одна хитрость в том, что вы, вероятно, нужно заголовок песни байтов, а также. Например. если файл находится в формате MP3, вам нужен MP3 header. Вы можете использовать тот же метод выше, чтобы получить диапазон байтов заголовка.
Другая сложная часть - как определить смещение байта в файле с нескольких секунд в песне. См. this question относительно этого. Вы можете легко оценить смещение байта, получив весь размер файла в байтах (см. getObjectMetadata), делясь на общую длину песни в секундах и умножая на количество секунд, чтобы компенсировать загрузку.
Я пробовал это точно и думал об этих сложных деталях, прежде чем я задал этот вопрос. Я продолжал получать java io.eofexception, что я, похоже, не мог решить. Я попытаюсь воссоздать свой код, а затем отредактировать свой вопрос с кодом, включенным, если ошибка сохранится –
Я получил его работу. Я понятия не имею, что я сделал по-другому, спасибо, но без вашего успокоения моих подозрений я бы не вернулся к нему –
на самом деле это сработало, когда я установил диапазон от (0-безотносительно), но если я попробую (ничегоoverzero-безотносительно), он не работает, и я получаю javax.sound.sampled.UnsupportedAudioFileException –