私は 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)
プログラムを30分間実行したままにしましたが、結果は得られず、まだ実行を続けています..
これに関して誰でも助けてもらえますか.....