1

我正在检查 Red5 的 oflaDemo。我想知道如何更改 oflaDemo 以便可以将某个 flv 文件流式传输给所有订阅者...

/** {@inheritDoc} */
    @Override
    public boolean appConnect(IConnection conn, Object[] params) {
        // Trigger calling of "onBWDone", required for some FLV players
        measureBandwidth(conn);
        if (conn instanceof IStreamCapableConnection) {
            IStreamCapableConnection streamConn = (IStreamCapableConnection) conn;
            SimpleConnectionBWConfig bwConfig = new SimpleConnectionBWConfig();
            bwConfig.getChannelBandwidth()[IBandwidthConfigure.OVERALL_CHANNEL] =
                1024 * 1024;
            bwConfig.getChannelInitialBurst()[IBandwidthConfigure.OVERALL_CHANNEL] =
                128 * 1024;
            streamConn.setBandwidthConfigure(bwConfig);
        }

            serverStream = StreamUtils.createServerStream(appScope, "live0");
            SimplePlayItem item = new SimplePlayItem();
            item.setStart(0);
            item.setLength(10000);
            item.setName("IronMan");
            serverStream.addItem(item);
            item = new SimplePlayItem();
            item.setStart(20000);
            item.setLength(10000);
            item.setName("DarkKnight");
            serverStream.addItem(item);
            serverStream.start();
            serverStream.setRepeat(true);

        return super.appConnect(conn, params);
    }

上面代码的结果对于所有订阅者来说只是一个空白屏幕......

你们有人知道吗?

提前致谢!

4

2 回答 2

0

我遇到了同样的问题。我发现空白屏幕是因为什么行

serverStream.setRepeat(true);

如果您将重复设置为 false 一切正常

UPD: 我认为这是 red5 错误。我做了一个技巧来连续重复一个flv。我添加了自定义播放列表控制器:

public class MyPlayListController implements IPlaylistController {
    @Override
    public int nextItem(IPlaylist playlist, int itemIndex) {
        return 0;
    }

    @Override
    public int previousItem(IPlaylist playlist, int itemIndex) {
        return 0;
    }
}
于 2012-08-28T10:50:26.847 回答
0

这在客户端更容易完成,如果您不想硬编码流名称,您可以将其名称作为 flash var 传递。

于 2010-09-03T16:40:28.883 回答