我正在尝试在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
当我需要将真实数据(如视频,音频等)传输到服务器时(即使我知道我可以从套接字二进制文件中写入),我甚至可以使它工作数据传递一个Buffer对象并使用它:https://github.com/substack/node-binary)并且套接字无法处理二进制数据,我的数据会损坏吗?
我不是专家,但我尽可能地调查这个,即使这无法解决,我想有人可以告诉我,如果我是对的,或者只是我搞砸了:)
答案 0 :(得分:1)
仍然,收到的数据不是0(在字节5,6,7和8上有128 0 7 2)所以我需要知道如何正确解析二进制数据,但至少现在,这似乎是可能的。
此致 阴影。
答案 1 :(得分:0)