有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过servlet下载部分视频文件

因此,我有一个指向在线视频的链接(例如somewebsite.com/myVideo.mkv),我想通过servlet在服务器上下载该视频。视频文件已启用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下载整个视频文件,视频播放效果良好。但是,如果我想在视频下载文件上指定一个特定的字节范围(URL myURL、long startByte、long endByte),视频不会播放。我使用了函数输入。skip()向前跳到startByte,但我怀疑它跳过了mkv格式的一些重要头。这就是为什么玩家无法识别它。有人知道如何在java中实现这一点吗


共 (1) 个答案

  1. # 1 楼答案

    有三种主要的HTTP流媒体技术:Apple HTTP Live streaming、Microsoft Smooth streaming和Adobe HTTP Dynamic streaming。每种技术都提供了将视频转换为相应格式的工具。如果你从一个大的视频文件开始,苹果和Adobe工具会创建一些小文件,每个文件包含10秒的视频,以及一个播放列表文件,为客户提供如何阅读它们的线索。我相信微软的工具实际上可以生成一个文件,但它会在内部包含小的视频片段

    通过HTTP流,“智能”存在于客户端,它知道如何读取主播放列表文件,以及如何绕过大量媒体文件或大量媒体文件片段。HTTP服务器只需提供范围标头指定的文件或文件片段