如果流名足够大,red5 RTMPClient 不会发布流
Posted
技术标签:
【中文标题】如果流名足够大,red5 RTMPClient 不会发布流【英文标题】:red5 RTMPClient is not publishing stream if streamname is big enough 【发布时间】:2013-10-02 18:40:38 【问题描述】:我有一个 Red5 客户端实现,它发布流,从视频文件加载到我们的 wowza 媒体服务器。问题是,如果流名称很大——大约超过 90 个符号——客户端不会发布它并且会静默失败。客户端预期的所有其他操作都已完成:它连接到服务器并创建一个流。但从不发布流。我没有看到相应的 RTMP 消息,也没有在 wowza 的日志中看到相应的反应。
我尝试调试客户端并跟踪执行,直到它开始写入 SocketChannel。对于执行较短的命名流(可以发布)和具有长名称的流的情况,一切都是相同的,永远不会发送“发布”的 RTMP 命令。
一个问题是:
怎么了?
如果我向 SocketChannel 写入了一些字节而没有抛出任何异常 - 是否保证发送了相应的消息?
1234563虽然我知道,通过 WireShark,这条数据从未发送过。更新 ...而且更奇怪的是 - 在发送“大”数据包之后发送一个较小的数据包并没有帮助。将更大长度的数据包提交到套接字后,将无法发送数据包。
【问题讨论】:
【参考方案1】:如果我向 SocketChannel 写入了一些字节而没有抛出任何异常 - 它是否保证发送了相应的消息?
它保证数据已经在本地套接字发送缓冲区中缓冲,直到 write() 返回的计数。仅此而已。
由于您无法发送更多数据,因此在我看来,接收器似乎没有读取大量数据。它是否可能因异常而失败并完全停止阅读?
【讨论】:
EJP,Wireshark 告诉我,我写入 SocketChannel 的 RTMP 数据包从未发送过。所以看起来这是一个客户端问题。可能是一些操作系统缓冲区溢出?.. 或者,你的意思是客户端可能不发送数据包,但尝试发送它并在服务器端失败,从而阻止 Wireshark 放下统计数据?以上是关于如果流名足够大,red5 RTMPClient 不会发布流的主要内容,如果未能解决你的问题,请参考以下文章