繁体   English   中英

nodejs中的RTMP实现是否可行?

[英]RTMP implementation in nodejs is possible?

我正在尝试在Node.js中实现RTMP,但在看到文档并尝试之后,我无法做到,我怀疑这是不可能让它看到node.js如何处理数据流。

我要这个代码: https//github.com/timwhitlock/node-amf/tree/master/node-rtmp

根据代码和写得不好的adobe文档,在连接之后,握手过程开始,客户端发送1537个八位字节的流,其中第一个是rtmp版本(应该总是3个),以下4个是时间戳其他4应为0(0000),其余数据均为随机字符。

现在,链接库完成所有这些操作,但在检查4个零点时会破坏。 它使用Net模块创建服务器,并监听连接事件。 使用事件提供的套接字对象,将编码设置为“二进制”(这种类型的编码不存在,直到我在http://nodejs.org/api/stream.html#stream_stream_setencoding_encoding文档中看到)然后试着检查四个零

我怀疑套接字无论如何都在'utf8'中进行编码,并且在打印第一个字节时,流可能会被搞砸,这绝不是相同的数据。 更改为套接字编码的十六进制,我发现匹配将指示我正在寻找的四个零:

V | TIME   |4 ZEROS |RANDOM DATA
03|0091c3ee|80000702|3e904115
03|0091ea60|80000702|f6e2d38a
03|00921a47|80000702|f2e21db3

03|0092eaeb|80000702|15834dbf
03|00931e0d|80000702|5f0b7891
03|00933c68|80000702|b4980c5d

甚至我可以使它工作这样的,当我需要流真实的数据,视频,音频等。到服务器(我知道我可以通过一个缓冲区对象,并使用这个插座的二进制数据写入: HTTPS ://github.com/substack/node-binary )并且套接字无法处理二进制数据,我的数据会损坏吗?

我不是专家,但我尽可能地调查这个,即使这不能解决,我想有人可以告诉我,如果我是对的,或者只是我搞砸了:)

好吧,我的回答是在同一个文档中 ,如果我不调用Net模块返回的套接字对象上的所有setEncoding(),我可以收到一个普通的二进制缓冲区,我可以随意解析,所以这似乎有可能。

仍然,收到的数据不是0(在字节5,6,7和8上有128 0 7 2)所以我需要知道如何正确解析二进制数据,但至少目前,这似乎是可能的。

问候,影子。

这不是一个编码问题(你不是搞砸了)。 我能找到的最接近的解释是Red5的来源:

OutboundHandshake.java:96

不知何故,该字段用于传输实现的版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM