2016-04-13 24 views
0

Bir Amazon s3 kovanından bir şarkı indirmem (veya akışını) yüklemem gerekiyor. Sorun şu ki, şarkı 270 saniye uzunsa, indirme/akıma 150 saniye içinde şarkıya başlamak ve oradan çalmak istiyorum.Amazon s3 Müzik dosyalarını daha hızlı yükleme

Bunu Amazon s3 web hizmetleri ve Java EE servlet teknolojisini kullanarak nasıl uygularım?

cevap

1

AWS Java SDK kullanarak, AmazonS3Client kullanın ve GetObjectRequest bir örneğiyle üzerinde getObject çağırmalıdır. İsteğinizi oluştururken, bayt aralığını setRange numaralı telefondan arayın. Bu, dosyanın tamamını indirmeden dosyanın bir kısmını alabilmenizi sağlar. getObject(), dosya içeriğini bir müzik çalara veya yerel dosyaya veya istediğiniz herhangi bir şeye aktarmak için kullanabileceğiniz bir S3Object döndürür.

biri zor kısmı muhtemelen şarkının başlığı yanı bayt gerektiğidir:

iki zor kısmı vardır. Örneğin. Dosya MP3 formatındaysa, MP3 header'a ihtiyacınız vardır. Başlığın bayt aralığını almak için yukarıdaki aynı yöntemi kullanabilirsiniz.

Diğer zor kısım, bir dosyadaki bayt ofsetinin şarkıya birkaç saniye içinde nasıl belirleneceğidir. Bununla ilgili olarak this question. Tüm dosya boyutunu bayt cinsinden alarak (bkz. getObjectMetadata), şarkının toplam uzunluğuna saniye cinsinden bölünerek ve indirme sayısını dengelemek için saniye sayısına göre çarparak byte ofsetini kolayca tahmin edebilirsiniz.

+0

Ben bu soruyu sormadan önce bu zor parçaları tam olarak düşündüm ve düşündüm. Çözemediğim bir java io.eofexception almaya devam ettim. Kodumu yeniden oluşturmaya çalışacağım ve eğer hata devam ederse benimle birlikte olan kodu içeren sorumu düzenleyeceğim –

+0

Çalıştığımı farkettim Hiçbir fikrim yok farklı bir şekilde yaptığım şüphe duyduğum güvenceleriniz olmasa da, geri dönmezdim –

+0

aslında (0-her ne olursa olsun) aralığı ayarladı, ancak (bir şeyden ne olursa olsun) deneyin ve ben bir javax.sound.sampled.UnsupportedAudioFileException –