2

我是 Xuggler 的新手。我想编写一个从 ByteArrayInputStream 读取视频文件的程序。这是代码:

 public static String path="/home/gurinderbeer/Downloads/IMG_1579.MOV";

 public static void main(String[] args) throws IOException
 {
     // get size of file
    File f = new File(path);
    int size = (int) f.length();
    byte[] b = new byte[size];

    // read data from inputstream into byte array b
    InputStream fileInputStream = null;
    fileInputStream = new FileInputStream(path);
    fileInputStream.read(b);


    // convert byte array to ByteArrayinputStream
    InputStream byteStream = new ByteArrayInputStream(b);

    //create container from byteStream
    IContainer container =IContainer.make();
    int result = container.open(byteStream,null);

    System.out.println(container.getNumStreams());
    System.out.println(container.getDuration());

    byteStream.close();

}

首先,从输入路径获取文件。获取文件大小,并初始化字节数组。

然后从文件输入 fileinputstream 中获取所有数据,并将该数据复制到字节数组。接下来,它从字节数组创建 byteArrayInputStream。

最后,这个 byteArrayInputStream 作为 IContainer 的输入。

此代码适用于视频文件,如果视频文件的大小立即小于 7 MB(运行时间不到 1 秒)。但如果我使用大于 7 MB 大小的视频文件,程序会继续运行并且永远不会结束。我没有给出任何错误,但继续执行。我尝试调试,发现它继续在这一行运行:

int 结果 = container.open(byteStream,null)

我让程序运行了半个小时,但它没有给出任何结果,并且仍然继续执行..

任何人都可以帮助解决这个问题......

4

0 回答 0