2

ある種のダウンロード サービスを作成していますが、以前の部分的なダウンロードを再開する機能があります。私は現在、このようなスキップメソッドを使用しています

                long skipped = 0;
                while (skipped < track.getCacheFile().length()){
                    skipped += is.skip(track.getCacheFile().length()-skipped);

                }

テストを行ったところ、入力ストリームで 45 mb をスキップするのに約 57 秒かかりました。特定のネイティブ コードがこれを行う方法に興味があります。たとえば、メディア プレーヤーはリモート ストリームの任意の部分を瞬時にシークできます。同じライブラリにアクセスできないことはわかっていますが、同様のことを達成できますか。

ところで、そのテストはwifiで行われました。通常のデータ ネットワークでは明らかに非常に遅くなります。

更新:非常に簡単です(以下に感謝します)

if (track.getCacheFile().length() > 0){
    request.setHeader("Range","bytes="+track.getCacheFile().length()+"-");  
}
4

3 に答える 3

2

入力ストリームを開始するプロトコルとして http を使用している場合は、RANGE ヘッダーを試すことができます。

ここを見てください:

http://www.west-wind.com/Weblog/posts/244.aspx

于 2011-01-25T15:41:37.603 に答える
2

スキップ方式の問題点は、スキップしてもデータを読まなければならないので受け取る必要があることです。最善の解決策は、必要な部分だけをサーバーに要求することです。

于 2011-01-25T15:33:34.117 に答える