オンラインのビデオ (somewebsite.com/myVideo.mkv など) へのリンクがあり、そのビデオをサーブレット経由でサーバーにダウンロードしたいと考えています。動画ファイルは CDN が有効になっているため、基本的に一般ユーザーはリンクをブラウザに入力するだけで再生が開始されます。これは私がこれまでに持っているコードです。
downloadFile(URL myURL){
InputStream input = myURL.openStream();
File video = new File ("/path-to-file/" + myURL.getFile());
FileOutputStream output = new FileOutputStream(output);
byte[] buffer = new byte[1024];
int read;
// Write full range.
while ((read = input.read(buffer)) > 0){
output.write(buffer, 0, read);
}
output.close();
input.close()
}
これを行うと、URL からビデオ ファイル全体がダウンロードされ、ビデオが正常に再生されます。ただし、動画の downloadFile(URL myURL、長い startByte、長い endByte) で特定のバイト範囲を指定したい場合、動画は再生されません。関数 input.skip() を使用して startByte までスキップしましたが、mkv 形式の重要なヘッダーをスキップしていると思われます。そのため、プレイヤーはそれを認識できません。Javaでこれを行う方法を知っている人はいますか?