首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在java中使用xuggle读取实时的webstream?(我可以用ffmpeg做,但不能用xuggle)

如何在java中使用xuggle读取实时的webstream?(我可以用ffmpeg做,但不能用xuggle)
EN

Stack Overflow用户
提问于 2013-02-15 00:12:35
回答 1查看 2K关注 0票数 8

所以如果我运行:

代码语言:javascript
复制
ffmpeg -t 10 -re -i "rtmp://170.93.143.150/rtplive/ app=rtplive/ playpath=e000990f025f0075004d823633235daa swfUrl=http://www.chart.state.md.us/video/mediaplayer/player.swf pageUrl=http://www.chart.state.md.us/video/video.asp?feed=e000990f025f0075004d823633235daa stop=5000 flashver=`LNX 11,2,202,262` live=true" test.flv -report

它为我提供了5秒的视频快照,这些视频来自put流,并被放到test.flv中。现在,我想在java中使用xuggle做同样的事情,只是每次我尝试打开容器时,它都会出错,并将x设置为-1:

代码语言:javascript
复制
 public IMediaReader grabStream(IMediaReader reader) throws IOException
  {
    String rtmp = "rtmp://170.93.143.150/rtplive/";
    rtmp = rtmp + " app=rtplive/";
    rtmp = rtmp + " playpath=e000990f025f0075004d823633235daa";
    rtmp = rtmp + " swfUrl=http://www.chart.state.md.us/video/mediaplayer/player.swf";
    rtmp = rtmp + " pageUrl=http://www.chart.state.md.us/video/video.asp?feed=e000990f025f0075004d823633235daa";
    rtmp = rtmp + " flashver=`LNX 11,2,202,262`";
    rtmp = rtmp + " live=true";

    IContainer container = IContainer.make();
    IMediaReader newReader = ToolFactory.makeReader(container);

    int x = container.open(rtmp, IContainer.Type.READ, null, true, false);

    if (x < 0)
    {
      IError ie = IError.make(x);
      System.out.println("Open error: " + ie.getType().toString());
      throw new RuntimeException("failed to open with error" + x);
    }

    return newReader;
  }

也许最好的方法是以某种方式使用inputstream将ffmpeg流传输到xuggle容器中?或者也许有另一种方法可以将webstream中的流传输到java?

EN

回答 1

Stack Overflow用户

发布于 2013-02-26 01:44:27

rtmp源字符串的格式如下

代码语言:javascript
复制
String rtmpSourceUrl = "rtmp://hostname/appName/streamName"; 

然后,我建议创建阅读器,如下所示

代码语言:javascript
复制
IContainerFormat inFormat = IContainerFormat.make();
inFormat.setInputFormat("flv"); // set the input format to avoid FFMPEG
                                    // probing
IMediaReader reader = ToolFactory.makeReader(rtmpSourceUrl);
reader.setQueryMetaData(false);
reader.setBufferedImageTypeToGenerate(-1);
reader.getContainer().setForcedVideoCodec(ID.CODEC_ID_FLV1);
reader.getContainer().open(rtmpSourceUrl , IContainer.Type.READ, inFormat,
            true, false);

这解决了你的问题吗?

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14879121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档