[AS3]as3.0中RTMFP的API一些介绍
[AS3]as3.0中RTMFP的API一些介绍,AS3提供了一个新的API用于支持RTMFP协义。连接到Stratus服务并创建点到点的流媒体就像是在FMS上工作一般。
RTMFP 是 Real‐Time Media Flow Protocol的缩写,是Adobe准备推出的一种新的通信协议,这种通信协议可以让 Flash 客户端直接和另外一个Flash 客户端之间进行数据通信,也就是常说的p2p的方式进行通信。
FP10里,AS3提供了一个新的API用于支持RTMFP协义。连接到Stratus服务并创建点到点的流媒体就像是在FMS上工作一般。需要使用的的开发工具是Flash CS4或更高版本和Flash Builder4,运行环境需要在FP10以上或AIR1.5上。
1、首先需要连接到Stratus上,代码:
- private const StratusAddress:String = "rtmfp://stratus.rtmfp.net";
- private const DeveloperKey:String = "your-developer-key";
- private var netConnection:NetConnection;
- netConnection = new NetConnection();
- netConnection.addEventListener(NetStatusEvent.NET_STATUS,netConnectionHandler);
- netConnection.connect(StratusAddress + "/" + DeveloperKey);
其中DeveloperKey可在adobe labs上免费申请:http://labs.adobe.com/technologies/stratus/
如果能正常连上Stratus,会得到NetConnection.Connect.Success事件。如果key无效,会得到 NetConnection.Connect.Failed事件。如果防火墙阻挡了UDP通信,也会收到 NetConnection.Connect.Failed事件。
2、在成功连接上Stratus之后,会获得一个256位的唯一标识符peerID(NetConnection.nearID)。其他FP端需要知道这 个ID,用于接收你发布的音频/视频流。Stratus并不提供用户系统,所以这个ID一般还要跟你自身的进行转换。可以使用xmpp协义或是一个简单的 webService来实现这个ID交换。
3、FP实例之间使用NetStream进行单向的直接通讯。如果要进行双向语音交流,那每个FP端必须建立两个NetStream,一个用于发送,一个用于接收。
创建发送流:
- private var sendStream:NetStream;
- sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS);
- sendStream.addEventListener(NetStatusEvent.NET_STATUS,netStreamHandler);
- sendStream.publish("media");
- sendStream.attachAudio(Microphone.getMicrophone());
- sendStream.attachCamera(Camera.getCamera());
其中publish的参数media表示发布音频/视频流的名称,Stratus并不支持媒体服务,只能发布点到点的媒体流。当发送媒体流时,FP只发送给那些监听了该流的播放器。
4、创建接收流
- private var recvStream:NetStream;
- recvStream = new NetStream(netConnection, id_of_publishing_client);
- recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler);
- recvStream.play("media");
在接收媒体流时,需要知道发布方的id。
5、发送者会发送一些控制信息给接收者。当接收者尝试获得该发布流时,发送者可以在onPeerConnect里决定是否允许接收者接收。
- var o:Object = new Object();
- o.onPeerConnect = function(subscriberStream:NetStream):Boolean { if (accept)
{ return true; } else { return false; } } sendStream.client = o;
6、在发布端的NetStream.peerStreams属性包含有了所有监听该流的接收者,
可以通过sendStream.send()将流发布给所有监听者,
也可以通过sendStream.peerStreams[i].send()将流发给指定的监听者。
7、NetConnection.maxPeerConnections属性是允许接收该流的最大连接数。默认值是8.
热门文章推荐
- [FMS]Adobe FMS产品(Adobe Flash Media Server)使用介绍(组图)
- [FMS]Flash Media Server之教程附示例代码
- [RTMP]国产RTMP/HLS直播服务器simple-rtmp-server
- [WOWZA]用wowza流媒体服务器发布和播放直播流(RTMP)
- [RTMP]又一款rtmp类的服务器openrtmfp流媒体服务器
- [RTMP]adobe之FMS视频直播解决方案流程介绍(组图)
- [RTMP协议]实时消息传输协议 (RTMP) 常识性介绍
- [FMS]Adobe的Flash Media Server服务器(FMS服务器)安装
请稍候...