【问题标题】:RTMP implementation in nodejs is possible?nodejs中的RTMP实现是可能的吗?
【发布时间】:2012-08-07 04:11:20
【问题描述】:

我正在尝试在 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 )并且套接字无法处理二进制数据,我会损坏数据对吗?

我不是专家,但我尽我所能对此进行调查,即使无法解决,我希望有人能告诉我我是对的还是我搞砸了:)

【问题讨论】:

标签: javascript flash node.js rtmp


【解决方案1】:

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

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

问候, 影子。

【讨论】:

    【解决方案2】:

    这不是编码问题(您没有搞砸)。我能找到的最接近的解释是 Red5 的来源:

    OutboundHandshake.java:96

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 2012-11-06
      • 2014-09-05
      相关资源
      最近更新 更多