顯示具有 FMS p2p 標籤的文章。 顯示所有文章
顯示具有 FMS p2p 標籤的文章。 顯示所有文章

2011年9月15日 星期四

fms 4 p2p multicast client-side

package {
import flash.display.Sprite;
import flash.net.NetConnection
import flash.net.NetStream
import flash.events.NetStatusEvent
import flash.media.Video
import flash.media.Camera
import flash.net.GroupSpecifier
public class _main extends Sprite {
private var nc:NetConnection
private var ns:NetStream
private var gs:GroupSpecifier
private var vid:Video
public function _main() {
trace("main")
vid = new Video()
vid.x = 100
vid.y = 100
this.addChild(vid)
inits()
}
private function inits() {
nc = new NetConnection()
nc.client = this
nc.addEventListener(NetStatusEvent.NET_STATUS,net_evt)
nc.connect("rtmp://app_ip/app_name/")

}
private function net_evt(evt:NetStatusEvent) {
trace(evt.info.code)
switch(evt.info.code) {
case "NetConnection.Connect.Success":
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, net_evt);
var cam:Camera = Camera.getCamera();
vid.attachCamera(cam);
ns.attachCamera(cam);
ns.publish("play_name");
break

case "NetStream.Connect.Success":

break
}
}
}
}

fms 4 p2p multicast server-side


var nc
var nss
var gs =new GroupSpecifier("myGroup/multicastOne");
gs.serverChannelEnabled = true;
gs.multicastEnabled = true;

application.onPublish = function(client, stream) {
    nss=stream
    nc = new NetConnection();
    nc.onStatus=net_handler
    nc.connect("rtmfp://localhost/app_name/");
}

function net_handler(info){
switch (info.code){
case "NetConnection.Connect.Success":
  var ng = new NetGroup(nc, gs.toString());
ng.onStatus = net_handler;
 break;
case "NetStream.Connect.Success":
this.attach(Stream.get(nss.name))
 this.publish(nss.name, "live");      
break;
case "NetGroup.Connect.Success":
var ns = new NetStream(nc, gs.toString());
    ns.onStatus = net_handler;
break
}
}

2011年9月6日 星期二

flash p2p 影像接收端

package {
import flash.display.Sprite;
import flash.net.NetConnection
import flash.net.NetStream
import flash.events.NetStatusEvent
import flash.media.Video
import flash.media.Camera
import flash.net.GroupSpecifier
public class _main extends Sprite {
private var nc:NetConnection
private var ns:NetStream
private var gs:GroupSpecifier
private var vid:Video
public function _main() {
trace("main")
vid = new Video()
vid.x = 100
vid.y = 100
this.addChild(vid)
inits()
}
private function inits() {
nc = new NetConnection()
nc.client = this
nc.addEventListener(NetStatusEvent.NET_STATUS,net_evt)
nc.connect("rtmfp://fms svr 位置")

}
private function net_evt(evt:NetStatusEvent) {
trace(evt.info.code)
switch(evt.info.code) {
case "NetConnection.Connect.Success":
gs =new GroupSpecifier("group字串");
gs.serverChannelEnabled = true;
gs.multicastEnabled = true;
ns = new NetStream(nc, gs.groupspecWithAuthorizations());
ns.addEventListener(NetStatusEvent.NET_STATUS, net_evt);
vid.attachNetStream(ns)
ns.play("串流名稱");
break

case "NetStream.Connect.Success":

break
}
}
}
}

flash p2p 影像發布端

package {
import flash.display.Sprite;
import flash.net.NetConnection
import flash.net.NetStream
import flash.events.NetStatusEvent
import flash.media.Video
import flash.media.Camera
import flash.net.GroupSpecifier
public class _main extends Sprite {
private var nc:NetConnection
private var ns:NetStream
private var gs:GroupSpecifier
private var vid:Video
public function _main() {
trace("main")
vid = new Video()
vid.x = 100
vid.y = 100
this.addChild(vid)
inits()
}
private function inits() {
nc = new NetConnection()
nc.client = this
nc.addEventListener(NetStatusEvent.NET_STATUS,net_evt)
nc.connect("rtmfp://fms svr位置")
}
private function net_evt(evt:NetStatusEvent) {
switch(evt.info.code) {
case "NetConnection.Connect.Success":
gs =new GroupSpecifier("group字串");
gs.serverChannelEnabled = true;
gs.multicastEnabled = true;

ns = new NetStream(nc, gs.groupspecWithAuthorizations());
ns.addEventListener(NetStatusEvent.NET_STATUS,net_evt);
break

case "NetStream.Connect.Success":
var cam:Camera = Camera.getCamera();
vid.attachCamera(cam);

ns.attachCamera(cam);
ns.publish("串流名稱");
break
}
}
}
}

2011年8月30日 星期二

fms 4 RTMFP 設定問題

將Adaptor.xml底下的
Adaptor->RTMFP->Core->HostPortList->HostPort

原本為:
<hostport>:19350-65535</hostport>

更改為:
<hostport public="真實ip:19350-65535">內部ip:19350-65535</hostport>

到防火牆開 內部ip 19350-65535的port

再reset fms即可