javascript - nodejs 中的 RTMP 实现是可能的吗?

标签 javascript flash node.js rtmp

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

我正在 fork 这段代码: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 ) 并且套接字无法处理二进制数据,我的数据会损坏吗?

我不是专家,但我尽我所能去调查这个问题,即使这个问题无法解决,我也希望有人能告诉我我是对的还是我搞砸了:)

最佳答案

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

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

问候, 阴影。

关于javascript - nodejs 中的 RTMP 实现是可能的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11891818/

相关文章:

actionscript-3 - AS3 - 垃圾收集器何时运行?

node.js - 等待 MongoDB 完成查询而不使用回调

javascript - 这是什么时间格式,如何将其转换为纪元?

javascript - 我可以使用 JavaScript 删除 HTML 代码中的一行吗?

javascript - 需要中间件功能的路由

javascript - Switch 语句运行多次

flash - 浏览器中循环音频的最佳方法?

javascript - 功能在需要时触发。我应该如何解决这个问题?

flash - 哪种语言更适合 P2P 视频流?

javascript - 仅使用没有名称的方法签名声明类的接口(interface)