IContainer可用于本地视频流或网络视频的读取。基本用法如官方:
IContainer container = IContainer.make();
if (container.open("myfile.flv", IContainer.Type.READ, null) <0) throw new RuntimeException("failed to open");
int numStreams = container.getNumStreams();
for(i = 0; i < numStreams; i++) {
IStream stream = container.getStream(i);
...query IStream for stream information...
}
IPacket packet = IPacket.make();
while(container.readNextPacket(packet) >= 0)
{ ... Do something with the packet... }
container.close();
在xuggle中,make方法一般用于创建对象。
IContainer.make()-创建一个容器用于存储视频流
open("myfile.flv", IContainer.Type.READ, null):open打开myfile视频流(也可读取实时网络视频流),IContainer.Type.READ即从url读取流,若为write则写入指定文件。若能正确读取流则返回值大于0,若小于0,可将返回值定义为IError,可获取错误数及类型,常见有error_IO(暂时未读取),error_eof(读流中断,如网络中断).此方法需配合close使用。
getNumStreams:获取视频流数量。
getStream:获取指定流 。然后可进行相关处理,如分离视频与音频流( stream.getStreamCoder()=ICodec.Type.CODEC_TYPE_VIDEO)
readNextPacket:开始读流操作,若返回值>= 0,则已获取流。