Amazon S3バケットから曲をダウンロード(またはストリーム)する必要があります。問題は、曲の長さが270秒であれば、150秒でダウンロード/ストリームを開始してそこから再生したいということです。Amazon s3音楽ファイルの読み込みが速くなる
Amazon S3 WebサービスとJava EEサーブレットテクノロジを使用して、これをどのように実現できますか?
Amazon S3バケットから曲をダウンロード(またはストリーム)する必要があります。問題は、曲の長さが270秒であれば、150秒でダウンロード/ストリームを開始してそこから再生したいということです。Amazon s3音楽ファイルの読み込みが速くなる
Amazon S3 WebサービスとJava EEサーブレットテクノロジを使用して、これをどのように実現できますか?
AWS Java SDKを使用する場合はAmazonS3Clientを使用し、GetObjectRequestのインスタンスでgetObjectを呼び出してください。リクエストを作成するときは、取得するバイト範囲をsetRangeにしてください。これにより、ファイル全体をダウンロードせずにファイルの一部を取得できます。 getObject()
はS3Objectを返します。このS3Objectを使用して、ファイルの内容を音楽プレーヤーやローカルファイルなどにストリームすることができます。
2つのトリッキーな部分があります:
一つのトリッキーな部分は、あなたがおそらく同様に曲のヘッダバイトを必要とするということです。例えば。ファイルがMP3形式の場合はMP3 headerが必要です。上記の同じメソッドを使用して、ヘッダーのバイト範囲をフェッチすることができます。
もう一つの難しい部分は、ファイル内のバイトオフセットをソングに数秒間に決定する方法です。それについてはthis questionを参照してください。ファイルの全体サイズをバイト単位で取得して(getObjectMetadataを参照)、ソングの長さ(秒単位)で除算し、ダウンロードをオフセットする秒数を掛けてバイトオフセットを簡単に見積もることができます。
私はこの質問をする前に、正確にそれを試してみて、これらのトリッキーな部分も検討しました。私は解決していないようなjava io.eofexceptionを得続けました。私は自分のコードを再作成しようとし、エラーが続くならばコードを含む私の質問を編集しようとします –
私はそれを働かせました私は違ったことに感謝していませんでしたが、 –
実際には範囲を(0〜何でも)設定していますが、何か試してみると何も動かず、javax.sound.sampled.UnsupportedAudioFileExceptionが表示されます –