繁体   English   中英

Java中gridfs mongodb的视频的一部分?

[英]part of the video from gridfs mongodb in java?

我已经将视频文件.mp4(18MB)上传到gridfs。 并尝试从Java代码中读取它。以下是我无法继续前进的几点

1)我可以将整个视频恢复为字节数组并可以播放

2)对于第一个Nbytes意味着从第一个块开始到n个块都不存在,我也可以使用直接从fs.chunks ...进行查询,如下所示,并提供给ServletOutputstream ..

DBCollection a= db.getCollection("fs.chunks");DBCursor cur1=a.find().limit(10);
    System.out.println(cur1);
    byte[] destination2 =new byte[2621440];
    int length2 = 0;
    while(cur1.hasNext()) {
        byte[] b2 = (byte[]) cur1.next().get("data");
        System.arraycopy(b2, 0, destination2, length2, b2.length);
        length2 += b2.length;
        System.out.println("##########");
        System.out.println(destination2.length);
    }

3)我被困在这里,当从块的中间读取时,意味着在find()操作中跳过了(n)个块之后,无法通过Windows Media Player播放视频。说无法进行编解码器等错误。以正确的方式尝试?

DBCollection a= db.getCollection("fs.chunks");
DBCursor cur1=a.find(new BasicDBObject("n",new BasicDBObject("$gt",9))).limit(10);
    System.out.println(cur1);
    byte[] destination2 =new byte[2621440];
    int length2 = 0;
    while(cur1.hasNext()) {
        byte[] b2 = (byte[]) cur1.next().get("data");
        System.arraycopy(b2, 0, destination2, length2, b2.length);
        length2 += b2.length;
        System.out.println("##########");
        System.out.println(destination2.length);
    }

...........

public void showVideos(Model model,HttpServletResponse response) throws IOException {............response.setHeader("Content-Type", "video/quicktime");
    response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");//byte[] bytearray =destination2 
    //response.s
    ServletOutputStream out = response.getOutputStream();
    System.out.println("hello");
    int n=0;
        //while(is.read(bytes, 0, 4096) != -1)
        {
        System.out.println(n++);
            out.write(bytearray);
            }

请建议我检索视频文件的一部分并从网格fs播放它?

为此,我将使用GridFS类。 下面的伪代码。 myFS指向存储桶,findOne查找文件的ID。

    GridFS myFS = null;
    if (bucket.isPresent()) {
        myFS = new GridFS(m.getDb(), bucket.get());
    } else {
        myFS = new GridFS(m.getDb());
    }
    return Optional.fromNullable(myFS.findOne(id));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM