狂野都城

一壶浊酒喜相逢,古今多少事, 都付笑谈中。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于FMS服务端数据流发布

Posted on 2009-05-23 13:05  狂野都城  阅读(415)  评论(0编辑  收藏  举报

看过网上很多帖子都在问如何在FMS服务器端进行stream广播,在客户端进行侦听,发现可以这样实现。

main.asc:

AS代码

  1. var isPlay=false;  
  2. application.onConnect=function(client){  
  3.     application.acceptConnection(client);  
  4.     trace(“it was connected!!”);  
  5.     client.playStream=function (){  
  6.         var ns=Stream.get(“37studio”);  
  7.         if(ns){  
  8.            if(!isPlay){  
  9.               ns.play(“stream/test”);  
  10.               ns.record();  
  11.               isPlay=true;  
  12.               return 0;  
  13.            }else{  
  14.               return Stream.length(“37studio”);  
  15.            }  
  16.         }  
  17.     }     
  18. }  
  19.       

client.fla:

AS代码

  1. import flash.display.Sprite;  
  2. import flash.events.NetStatusEvent;  
  3. import flash.events.SecurityErrorEvent;  
  4. import flash.media.Video;  
  5. import flash.net.NetConnection;  
  6. import flash.net.NetStream;  
  7. import flash.events.Event;  
  8. import flash.net.Responder;  
  9. import flash.net.ObjectEncoding;  
  10.   
  11. var videoURL:String = “stream/test”;  
  12. var connection:NetConnection;  
  13. var stream:NetStream;  
  14.   
  15. connection = new NetConnection();  
  16. connection.objectEncoding=ObjectEncoding.AMF0;  
  17. connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);  
  18. connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);  
  19. connection.connect(“rtmp://localhost/serverPublih”);  
  20.   
  21.   
  22. function netStatusHandler(event:NetStatusEvent):void {  
  23.     switch (event.info.code) {  
  24.         case “NetConnection.Connect.Success” :  
  25.             trace(“connect success!!!”);  
  26.             connectStream();  
  27.             break;  
  28.         case “NetStream.Play.StreamNotFound” :  
  29.             trace(“Stream not found: ” + videoURL);  
  30.             break;  
  31.     }  
  32. }  
  33.   
  34. function securityErrorHandler(event:SecurityErrorEvent):void {  
  35.     trace(“securityErrorHandler: ” + event);  
  36. }  
  37.   
  38. function connectStream():void {  
  39.     stream= new NetStream(connection);  
  40.     stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);  
  41.     var video:Video = new Video();  
  42.     video.attachNetStream(stream);
  43.     addChild(video);  
  44.     connection.call(“playStream”,new Responder(onResult));  
  45. }  
  46.   
  47. function onResult(para:*):void {  
  48.     trace(“para:”+para);
  49.     stream.play(“37studio”);  
  50.     stream.seek(para);  
  51.     return;