·您当前的位置:首页 > 技术教程 > Rtmp技术 >

[AS3]RTMFP的应用实例(P2P应用)

时间:2014-05-15 08:48王翔
其中DeveloperKey可在adobe labs上免费申请,[AS3]RTMFP的应用实例(P2P应用)

1、首先需要连接到Stratus上,代码:

  1. private const StratusAddress:String = "rtmfp://stratus.rtmfp.net"
  2. private const DeveloperKey:String = "your-developer-key"
  3. private var netConnection:NetConnection;  
  4. netConnection = new NetConnection(); 
  5. netConnection.addEventListener(NetStatusEvent.NET_STATUS,netConnectionHandler); 
  6. 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,一个用于发送,一个用于接收。
创建发送流:
  1. private var sendStream:NetStream;  
  2. sendStream = new NetStream(netConnection, NetStream.DIRECT_CONNECTIONS); 
  3. sendStream.addEventListener(NetStatusEvent.NET_STATUS,netStreamHandler); 
  4. sendStream.publish("media"); 
  5. sendStream.attachAudio(Microphone.getMicrophone()); 
  6. sendStream.attachCamera(Camera.getCamera()); 
其中publish的参数media表示发布音频/视频流的名称,Stratus并不支持媒体服务,只能发布点到点的媒体流。
当发送媒体流时,FP只发送给那些监听了该流的播放器。
4、创建接收流
  1. private var recvStream:NetStream; recvStream = new NetStream(netConnection, id_of_publishing_client);
     recvStream.addEventListener(NetStatusEvent.NET_STATUS, netStreamHandler); recvStream.play("media"); 
在接收媒体流时,需要知道发布方的id。
5、发送者会发送一些控制信息给接收者。当接收者尝试获得该发布流时,发送者可以在onPeerConnect里决定是否允许接收者接收。
  1. 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.

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器