我是 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)
我让程序运行了半个小时,但它没有给出任何结果,并且仍然继续执行..
任何人都可以帮助解决这个问题......