首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过RTMP的NodeJS和RED 5媒体服务器

通过RTMP的NodeJS和RED 5媒体服务器
EN

Stack Overflow用户
提问于 2012-10-24 23:33:50
回答 4查看 10.5K关注 0票数 61

这更多的是一个概念性的问题,而不是一个直接的“如何做到这一点”。

通常可以在HTML5和nodeJS/binaryJS中实现类似flash的解决方案来流式传输音频(独立于我们从哪里获得流数据,例如webRTC或其他)吗?如果是这样的话,你会怎么做呢?

自2010年以来,关于stackoverflow found here及其its的查询只有一次。从那时起,NodeJS和HTML5不断成长和成熟。

人们通常做的事情:当使用多媒体流(即视频或音频)到服务器时,在getUserMedia()完全到来之前,在当前时间点绝对没有什么比take a while更好的了--老实说,它可能会take a while,直到99%的浏览器用户都能使用它。

将数据流式传输到服务器的一般做法是使用客户端闪存或Flex应用程序,然后将其连接到RTMP协议驱动的媒体服务器,如RED5FMSWowza。例如,通过RTMP发送麦克风输入的客户端应用程序可能如下所示(简化版本)

代码语言:javascript
复制
import flash.net.NetStream;

private var myMic:Microphone;
private var nc:NetConnection;
private var ns:NetStream

nc = new NetConnection();    
ns = new NetStream(nc);
nc.connect(rtmp://localhost/serverApp);
myMic = Microphone.getMicrophone();
ns.attachAudio(myMic);

与服务器应用程序一起,可以很容易地将数据流式传输到服务器。

我想做什么:有一个在nodeJS上运行的应用程序服务器(可能实现socketIObinaryJS),它可以捕获传入的RTMP流。就像这样

代码语言:javascript
复制
//require
var rtmp = require('node-rtmp'),
var fs = require('fs');

//rtmp server address
var rtmpServer = 'rtmp://localhost';

//create a binary server listening that receives stream data
var RTMPServer = rtmp.RTMPServer();
var server = RTMPServer ({port: 1935});

server.on('connection', function(client){
 //check if user is allowed to do so
 rtmp.newStream(client.stream);
});

也许通过eventEmitters使用socketIO来区分用户交互可能会更好。

可能的优点:一般来说,使用这种方法看起来有点开销,但对我来说可能有好处,我也希望你能对此发表评论。

  • 通过运行闪存的express和socketIO
  • hybrid实现(通过RTMP)和getUserMedia() (通过添加binaryJS和Mozilla AudioAPI的二进制传输机制)
  • 轻松验证用户交互。如果完全支持getUserMedia(),则可以轻松删除
  • 实现更多控制服务器框架中的rtmp实现

更新:我已经和Malcontenti-Wilson先生谈过了,他负责8个月前编写的only node-rtmp package,但由于它写得很差,他遇到了障碍。有没有人用过这个或者能检查代码?

更新2: Malcontenti-威尔逊先生给我发了一封邮件,引起我对node-mtrude (一个奇怪的名字)的注意,它做的正是我们可能想要的。有没有人使用过这种包?

EN

回答 4

Stack Overflow用户

发布于 2013-04-13 21:31:56

是的,这是可能的,但你有一些问题。

1) Red5的文档非常少,而且有很多buggy。

2) rtmpe/rtmps

3)性能/可扩展性

4) 1到3是你可以克服的事情,但不是在没有非常深入地了解媒体分发及其所有相关问题的情况下。当你完成的时候,你将会是800个真正理解它的人中的一个。要解决意想不到的问题,你必须走很长的路。

票数 2
EN

Stack Overflow用户

发布于 2013-12-31 20:15:36

现在有一个名为vertx的平台,在这个平台上可以进行polygot开发。因此,red5 jar可以与现有代码一起包含在您的服务器端,并且可以运行rtmp流服务器。在客户端,你可以使用像video.js或JW player这样的播放器来回放数据流,并且已经获得了flash回退策略。在客户端发布方面,我不确定是否有基于javascript的RTMP实现。

票数 1
EN

Stack Overflow用户

发布于 2015-09-12 05:29:37

WCS是Flash、WebRTC、SIP、Websockets和Wowza兼容协议RTSP、RTMP的混合实现。

流转换方案:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13052530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档