5

以下のコードを使用して、Xuggler でビデオを正常に再生できました。ファイルではなく、inputStream からストリーミングできるようにする必要があります。コメントアウトしたコードを使って Icontainer を作成してみました。コードをコメントアウトしたときに、入力ストリームの代わりに文字列を使用するように getTestFile メソッドを変更しました。もともと入力ストリームを正しく取得していました。

open を Icontainer で呼び出すと、無期限にブロックされます。これに正しくアプローチしているかどうかはわかりません。ファイルを使用せず、入力ストリームを使用せずに、基本的に同じことを行うにはどうすればよいですか?

ありがとう :-)

package com.plumber.testing;

import com.xuggle.mediatool.IMediaReader;
import com.xuggle.mediatool.IMediaViewer;
import com.xuggle.mediatool.ToolFactory;
import com.xuggle.xuggler.IContainer;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class VideoTest {

    public static void main(String[] args) throws FileNotFoundException {


//        IContainer iContainer = IContainer.make();
//        iContainer.open(getTestFile("IMG_0983.MOV"), null);
//        I was originally passing the icontainer to make reader
        IMediaReader mediaReader = ToolFactory.makeReader(getTestFile("IMG_0983.MOV"));


        IMediaViewer mediaViewer = ToolFactory.makeViewer(true);

        mediaReader.addListener(mediaViewer);

        while (mediaReader.readPacket() == null) ;

    }

    private static String getTestFile(String fileName) {
        return VideoTest.class.getClassLoader().getResource("com/plumber/testing/testfiles/" + fileName).getPath();
    }

}
4

1 に答える 1

3

次のようなことをする必要があると思います:

    IContainer iContainer = IContainer.make();
    if (iContainer.open(inputStream, IContainer.Type.READ, format) >= 0) {
        IMediaReader mediaReader = ToolFactory.makeReader(iContainer);
        ...
    }

... javadocs の内容に基づいています。IContainerFormatクラスの静的メソッドを使用してフォーマットを取得する必要があるようです。nullフォーマットを指定すると、メソッドopenはコンテナーの種類を推測しようとします... どうやら。

于 2013-09-01T03:59:07.760 に答える