0

我对 Netty 很陌生,对 Java 不是很精通,我正在尝试制作一个客户端来连接和下载来自 Wowza 的 HLS 流。我的目标不是观看视频,而是能够建立多个同时连接以对 Wowza 服务器提供的 HLS 流进行压力测试。

我一直使用HttpSnoopClient示例作为起点,示例客户端成功连接并从作为参数 ( wowza-server/stream-name/playlist.m3u8) 提供的 url 下载播放列表内容。现在,我必须使用原始 URI 形成一个新的连接/请求,并替换playlist.m3u8为我正在解析的接收到的响应的一部分(类似于chunklistxxxx.m3u8)。之后,我需要处理该响应,该响应将为我提供指向视频文件的链接,并形成新的连续连接/请求以下载这些文件。下载完成后,对新块重复该过程。

我的问题是:如何将处理后的内容StringHttpSnoopClientHandler主类返回,以便形成新的连接?

4

1 回答 1

0

通常,您可以在您的 : 中定义一个成员字段HttpSnoopClientHandler

class HttpSnoopClientHandler ... {
    final BlockingQueue<String> content = new LinkedBlockingQueue<>();
    final StringBuilder contentBuffer = new StringBuilder(...);

    public void channelRead0(...) {
        // On every HttpContent:
        contentBuffer.append(...);

        // On LastHttpContent:
        content.add(contentBuffer.toString());
        contentBuffer.setLength(0);
    }
}

然后你可以content从你的Main班级得到:

HttpSnoopClientHandler h = channel.pipeline().get(HttpSnoopClientHandler.class);
String content = h.content.poll(timeout, timeUnit);
于 2013-11-02T09:24:52.493 回答