【问题标题】:xuggler icontainer read from inputstream从输入流中读取的 xuggler 图标容器
【发布时间】:2016-04-17 11:46:47
【问题描述】:

我正在使用 xuggler 将视频转码为不同的格式。 如果我直接从文件打开我的 IContainer,它可以完美运行,但是,这次我想使用 InputStream 打开 IContainer。奇怪的是我试图通过 FileInputStream 打开一个 mp4 格式的视频,可以使用这个 FileInputStream 打开 IContainer,但是我无法在这个流中读取 Ipacket。有人可以给我一些建议吗?错过了什么吗?我真的需要我的 xuggler 来处理流

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

    //the file input stream
    FileInputStream fi = new FileInputStream("test.mp4");

    //icontainer format
    IContainerFormat format = IContainerFormat.make();
    format.setInputFormat("mp4");

    IContainer container = IContainer.make();
    //open container via FileInputStream
    int data = container.open(fi, format);

    IPacket packet = IPacket.make();
    //read packet 
    int info = container.readNextPacket(packet);

    System.out.println(data);
    System.out.println(info);
}

结果

data: 0
info: -1094995529

根据 IError,当我尝试读取数据包时出现未知错误。我正在使用 xuggler 5.4

【问题讨论】:

    标签: java xuggler


    【解决方案1】:

    首先,流必须是可搜索的(就像 hadoop 中的 FSDataInputStream 一样),否则 Xuggler 无法处理,FileInputStream 不是这种流,可悲.... 实际上,seek() 函数对于 Xuggler 读取一个媒体文件

    现在,开始处理可搜索的流。

    我找到了解决方案,Xuggler 实际上可以通过IURLPROTOCOLHANDLER 处理流,我创建了实现 iurlprotocolhandler 的自定义类并且它“有效”。 我从这个Example 中了解到,它使用流FSDataInputStream。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-03
      • 2018-03-05
      • 2011-02-12
      相关资源
      最近更新 更多