渲染视频流作为部分内容而不是完整流到chrome

时间:2018-02-09 10:39:29

标签: java google-chrome video-streaming html5-video

我们目前向后端服务器提交视频播放请求,将完整的流作为输入流发送到浏览器(窗口)中进行播放。这样可以正常工作,但是由于搜索功能在chrome中不起作用,因此增加了复杂性。建议的解决方案是告诉Web服务器它需要接受一个字节范围,然后以部分字节范围传递流。我不确定这是否会解决这种情况,但我的问题是如何在字节范围内返回流,考虑到以下是现在的方式:

    InputStream is= null;
    is = new FileInputStream(ndirectoryFile);

    ....
    //(calling class request)
    stream = videoWrapper.getVideo(id, address);

如果我在字节范围内读取文件,我是否只是遍历文件但是如何发送响应:

InputStream is = new ByteArrayInputStream(new byte[] { 0, 1, 2 }); 
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
int nRead;
byte[] data = new byte[1024];
while ((nRead = is.read(data, 0, data.length)) != -1) {
    buffer.write(data, 0, nRead);
}

buffer.flush();
byte[] byteArray = buffer.toByteArray(

在发送最终响应之前,初始输入流将传递给相当多的类。请任何想法。

编辑:

我想了解chrome的html5视频问题。有很多关于设置服务器响应头的帖子包括Accept-Ranges =,Content-length =,Content-Range =这会告诉chrome下载字节范围,然后允许搜索功能工作。由于视频播放搜索在Firefox中工作,我不应该改变我传送流的方式或者我会吗?我还需要从服务器提交部分视频范围吗?怎么样?

1 个答案:

答案 0 :(得分:0)

我通过不必更改任何流代码来解决我的问题,而只是确保将正确的范围标头应用于响应以确保chrome处理播放。

Accept-Ranges: bytes
Content-Range: bytes 0-1025/905357
Content-Length: 905357