tox*_*e20 59 red5 rtmp audio-streaming node.js webrtc
这更像是一个概念性问题而不是直接"如何做到这一点".
通常是否可以实现类似flash的解决方案来流式传输音频(独立于我们从HTMLR和nodeJS/binaryJS中获取流数据的位置,例如webRTC或其他).如果是这样,你会怎么做?
从2010年开始,这里只发现了一个关于stackoverflow的问题.从那时起,NodeJS和HTML5已经发展壮大.
人们通常做什么: 当使用多媒体流(即视频或音频)到服务器时,在当前时间点肯定没有任何东西可以击败闪存,直到getUserMedia()完全到达- 这可能需要一段时间直到99浏览器用户的百分比将完全使用它.
将数据流式传输到服务器的一般做法是使用客户端Flash或Flex应用程序,然后连接到RT5协议驱动的介质服务器,如RED5,FMS或Wowza.例如,通过RTMP发送麦克风输入的客户端应用程序可能看起来像(简化版)
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);
Run Code Online (Sandbox Code Playgroud)
与服务器应用程序一起,可以轻松地将数据流式传输到服务器.
我想做什么: 在nodeJS上运行一个app服务器(可能实现socketIO和binaryJS),捕获传入的RTMP流.就像是
//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);
});
Run Code Online (Sandbox Code Playgroud)
可能最好使用socketIO通过eventEmitters来区分用户交互.
可能有什么好处:一般来说,采用这种方法似乎有点开销,但对我来说可能有优势,我也希望你对此发表评论.
更新: 我已经和Malcontenti-Wilson先生谈过了,他负责制作唯一的节点-rtmp软件包,该软件包已经写好但是在8个月前已经停止使用,因为它编写得不好而且遇到了障碍.使用过这个或能够检查代码的人?
更新2: Malcontenti-Wilson先生只是给我发了一封邮件,让我注意node-mtrude(有点奇怪的名字),它正在做我们可能想要的事情.有没有人使用这种包装?
是的,这是可能的,但你有一些问题。
1) Red5 的文档严重不足且存在缺陷。
2)rtmpe/rtmps
3)性能/可扩展性
4) 1 到 3 是您可以克服的问题,但如果不非常深入地了解媒体分发及其所有相关问题,则无法克服。当您完成时,您将成为大约 800 名真正理解它的人之一。你将不得不走很长的路来解决意想不到的问题。
| 归档时间: |
|
| 查看次数: |
9690 次 |
| 最近记录: |