javascript中的RTP RTSP实现

Posted

技术标签:

【中文标题】javascript中的RTP RTSP实现【英文标题】:RTP RTSP implementation in javascript 【发布时间】:2013-01-31 00:36:21 【问题描述】:

我有一个客户端程序和一个服务器程序。服务器在我的本地主机上,它有我的 .mpeg 视频。

使用节点 JS 我应该从服务器流式传输视频。客户端请求消息,例如播放/暂停/恢复/倒带等,所以我想我必须使用 RTSP 来确定通过 RTP 发送什么。但我不知道从哪里开始。

到目前为止,我所拥有的只是用于过滤消息的 RegEx,例如在客户端上有播放/暂停/设置等按钮,因此我可以抓取该文本。我有一个开关。 但是,如果我得到了设置,我应该怎么做?

P.S 我不允许使用 RTSP 模块或 RTP 模块。必须从头开始。

【问题讨论】:

你能改进一下这个标题吗?这对我来说真的毫无意义。 你希望我如何改进它? 您的“RTP?RTSP 在 javascript 中实现”有什么问题 我不知道从哪里开始。我让我的服务器从客户端获取请求,例如暂停、播放恢复。但是当我得到这些命令时我该怎么办?我有 video.mpeg 我如何使用 rtp 将其发送给客户端 你在使用 html5 和 websocket 吗? 【参考方案1】:

当通过网络传输 mpeg 文件时,您必须分别处理 RTSP 和 RTP。 RTSP 用于信令、会话建立和启动底层 RTP 流。如果您需要在 node.js 中执行此操作,我建议加载一个已经实现 RTSP/RTP 的库(创建自己的库是一项艰巨的任务,但它是可行的以及)。

关于在 node.js 中加载 c++ 库的一些信息:How can I use a C++ library from node.js?

所以基本上,您需要从您的 mpeg 文件中提取原始 h264 流。为此,我推荐 ffmpeg 或其他一些了解 mpeg 文件结构的库/代码。然后您需要将 RTP 数据包内的编码帧打包;然后,您将从服务器发送回客户端。客户端然后将编码帧解包成实际帧;然后将它们解码/显示在屏幕上。

我建议阅读 http://www.ietf.org/rfc/rfc3984.txt 以了解有关打包 H264 视频的标准方法的信息。

这都是非常通用的方法,但它给了你一个大致的想法。 希望这些信息对您有所帮助,祝您好运。

【讨论】:

我们没有使用 HTTP 或 HTML。我有一个 .exe 客户端...具有以下选项 SETUP PLAY PAUSE TEARDOWN 当客户端按下 SETUP 时,它会向服务器发送 RTSP 消息,然后我会发回 RTSP 消息,然后为该客户端创建一个套接字。并使用 UDP 数据包发回 RTP 消息说“200 OK”。现在下一步是.. 如果客户端单击播放,我需要获取视频并将其分块为帧,然后使用 RTP 发送它。现在这就是我所在的位置。我需要获取已经压缩的 .mpeg 文件,我需要将其分块我假设我必须使用 fs ??? 我认为现在更好地了解您的设置。我肯定会推荐您的 mpeg 文件的 http 直播。否则,您将不得不为您的服务器添加 RTSP/RTP 支持;然后您必须从 mpeg 文件中提取音频/视频,然后在两个单独的 RTP 会话中流式传输音频/视频。希望这会有所帮助。 我不允许使用 http。就像在项目描述中所说的主要目标是实现 RTP 和 RTSP。他们通过不包括音频使其变得更容易。我坚持从视频文件中获取字节数组。我必须将视频文件读取为字节 是的,我忘了告诉你,我们不允许使用 RTP/RTSP 模块,我们必须自己制作。 现在...这是我拥有的获取视频前 20 个字节的代码 var file = fs.createReadStream(myClient.File, encoding: 'binary', 'bufferSize' :4 * 1024,开始:0,结束:10); file.on('error', function(err) console.log('Error '+err); throw err; ); file.on('data', function(data) console.log('Data '+data); //发送 12 字节的帧头,包含时间戳和 cc 和 P 等 //sock.write ("23323"+数据); ); file.on('end', function() console.log('读完所有数据'); );

以上是关于javascript中的RTP RTSP实现的主要内容,如果未能解决你的问题,请参考以下文章

RTP 和 RTSP的区别

RTP,RTCP,RTSP等网络协议有何用途和区别

如何用串流直播系统进行RTSP/RTP直播

webrtc-RTP/RTSP/RTCP的概念

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:概览

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:RTP音视频传输解析层之音视频数据传输格式