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
}
}
}
}
2011年9月15日 星期四
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
}
}
}
}
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
}
}
}
}
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即可
Adaptor->RTMFP->Core->HostPortList->HostPort
原本為:
<hostport>:19350-65535</hostport>
更改為:
<hostport public="真實ip:19350-65535">內部ip:19350-65535</hostport>
到防火牆開 內部ip 19350-65535的port
再reset fms即可
訂閱:
文章 (Atom)