如果streamname足够大,red5 RTMPClient不会发布流

时间:2013-10-02 18:40:38

标签: java nio red5 rtmp socketchannel

我有一个Red5客户端实现,它发布从视频文件加载到我们的wowza媒体服务器的流。问题是,如果流名称很大 - 大约超过90个符号 - 客户端不会发布它并且无声地失败。客户端期望的所有其他操作都已完成:它连接到服务器并创建流。但从不发布流。我没有看到相应的RTMP消息,我在wowza的日志中看不到结果。

我尝试调试客户端并跟踪执行,直到它开始写入SocketChannel。对于执行较短命名流(发布确定)的情况,以及具有长名称的流,一切都是相同的,从而不发送RTMP命令“发布”。

问题是:

  1. 怎么了?

  2. 如果我向SocketChannel写了一些字节而没有抛出任何异常 - 它是否保证发送了相应的消息?

  3. 如果我已经向SocketChannel写了一些字节而没有抛出任何异常 - 我可以通过我的操作系统(在我的情况下是MACOS)检查字节是否真的写在某处?虽然我通过WireShark的方式知道这条数据从未发送过。

  4. UPDATE ...而且更奇怪的是 - 在发送“大”数据包后发送较小的数据包并没有帮助。在将更大长度的数据包提交到套接字后,不能发送数据包。

1 个答案:

答案 0 :(得分:0)

  

如果我向SocketChannel写了一些字节而没有抛出任何异常 - 它是否保证发送了相应的消息?

它保证数据已在套接字发送缓冲区中本地缓冲,直到write()返回的计数。没什么。

由于您无法发送更多数据,因此听起来好像接收器没有读取大量数据。是否可能会因例外而失败并且不再完全阅读?