Advertisement
sanych_dv

PeerVideoPlayer: test

Feb 20th, 2016
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package
  2. {
  3.     import com.junkbyte.console.Cc;
  4.     import flash.events.AsyncErrorEvent;
  5.     import flash.events.NetStatusEvent;
  6.     import flash.events.SecurityErrorEvent;
  7.     import flash.media.Video;
  8.     import flash.net.GroupSpecifier;
  9.     import flash.net.NetConnection;
  10.     import flash.net.NetGroup;
  11.     import flash.net.NetStream;
  12.     import flash.net.NetStreamAppendBytesAction;
  13.     import flash.utils.ByteArray;
  14.    
  15.     public class PeerVideoPlayer
  16.     {
  17.         private var _nc_broadcasting:NetConnection;
  18.         private var _groupSpec:GroupSpecifier;
  19.         private var _netGroup:NetGroup;
  20.        
  21.         private var _video:Video;
  22.         private var _ns:NetStream;
  23.        
  24.         private var _isMetaData:Boolean = false;
  25.        
  26.         public function PeerVideoPlayer()
  27.         {
  28.        
  29.         }
  30.        
  31.         public function start():void
  32.         {
  33.             buildBroadcasting();
  34.        
  35.         }
  36.        
  37.         private function buildVideo():void
  38.         {
  39.            
  40.             /*          var nc:NetConnection = new NetConnection();
  41.                nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityHandler);
  42.                nc.addEventListener(NetStatusEvent.NET_STATUS, connectionStatusHandler);
  43.                nc.connect(null);
  44.            
  45.                if (_ns != null)
  46.                {
  47.                _ns.close();
  48.                }*/
  49.            
  50.             _ns = new NetStream(_nc_broadcasting, _groupSpec.groupspecWithoutAuthorizations());
  51.             _ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
  52.             _ns.addEventListener(NetStatusEvent.NET_STATUS, streamStatusHandler);
  53.            
  54.             _ns.client = {};
  55.            
  56.             _ns.client.onMetaData = function(metadata:Object):void
  57.             {
  58.                 var obj:Object = {};
  59.                
  60.                 for (var key:String in metadata)
  61.                 {
  62.                     obj[key] = metadata[key];
  63.                 }
  64.                
  65.                 Cc.log("Video metadata:");
  66.                
  67.                 obj.o();
  68.                
  69.                 Cc.log("Video duration: ", Math.ceil(metadata.duration), " sec");
  70.             }
  71.            
  72.             _ns.client.onVideoBytes = function(bytes:ByteArray):void
  73.             {
  74.                 Cc.log("onVideoBytes: ", bytes.length);
  75.                
  76.                 //  _ns.appendBytes(bytes);
  77.             }
  78.            
  79.             _video = new Video();
  80.            
  81.             _video.width = 3840;
  82.             _video.height = 1080;
  83.            
  84.             _video.opaqueBackground = 0x000000;
  85.            
  86.             Main.__stage1.addChild(_video);
  87.            
  88.             _video.attachNetStream(_ns);
  89.            
  90.             _ns.play("video");
  91.            
  92.             Cc.log("NS PLAY: ", _ns.farID);
  93.            
  94.             // _ns.play(null);
  95.            
  96.              _ns.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
  97.            
  98.             Cc.log("Video stream started, waiting for peer bytes...");
  99.        
  100.         }
  101.        
  102.         public function buildBroadcasting():void
  103.         {
  104.             _nc_broadcasting = new NetConnection();
  105.             _nc_broadcasting.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityHandler);
  106.             _nc_broadcasting.addEventListener(NetStatusEvent.NET_STATUS, broadcastingStatusHandler);
  107.             _nc_broadcasting.connect("rtmfp:");
  108.        
  109.         }
  110.        
  111.         private function setupNetGroup():void
  112.         {
  113.             _groupSpec = new GroupSpecifier("videoGroup");
  114.             _groupSpec.serverChannelEnabled = true;
  115.             _groupSpec.postingEnabled = true;
  116.             _groupSpec.multicastEnabled = true;
  117.             _groupSpec.ipMulticastMemberUpdatesEnabled = true;
  118.            
  119.             _groupSpec.addIPMulticastAddress("225.225.0.1:30300");
  120.            
  121.             _netGroup = new NetGroup(_nc_broadcasting, _groupSpec.groupspecWithoutAuthorizations());
  122.            
  123.             _netGroup.addEventListener(NetStatusEvent.NET_STATUS, broadcastingStatusHandler);
  124.        
  125.         }
  126.        
  127.         private function broadcastingStatusHandler(e:NetStatusEvent):void
  128.         {
  129.            
  130.             Cc.log("BROADCASTING STATUS: ", e.info.code);
  131.            
  132.             switch (e.info.code)
  133.             {
  134.                 case "NetConnection.Connect.Success":
  135.                    
  136.                     setupNetGroup();
  137.                    
  138.                     break;
  139.                
  140.                 case "NetGroup.Connect.Success":
  141.                    
  142.                     //      buildBroadcastingStream();
  143.                    
  144.                     //startVideoStream();
  145.                    
  146.                     //buildVideo();
  147.                    
  148.                     break;
  149.                
  150.                 case "NetGroup.MulticastStream.PublishNotify":
  151.                     buildVideo();
  152.                     break;
  153.                
  154.                 case "NetGroup.Posting.Notify":
  155.                    
  156.                     switch (e.info.message.act)
  157.                     {
  158.                         case "videoData":
  159.                            
  160.                             Cc.log("Receive video metadata from stream publisher");
  161.                            
  162.                             //e.info.message.metadata.o();
  163.                            
  164.                             //_ns.send("@clearDataFrame", "onMetaData");
  165.                             //_ns.send("@setDataFrame", "onMetaData", e.info.message.metadata);
  166.                            
  167.                             //_ns.client = {};
  168.                             //
  169.                             //_ns.send("onMetaData", e.info.message.metadata);
  170.                             //_ns.send("@setDataFrame", "onMetaData", e.info.message.metadata);
  171.                            
  172.                             _isMetaData = true;
  173.                            
  174.                             // _ns.appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK);
  175.                            
  176.                             break;
  177.                         default:
  178.                    
  179.                                
  180.                                     /*var bytes:ByteArray = e.info.message.data;
  181.                    
  182.                        
  183.                            _ns.appendBytes(bytes);
  184.                            bytes.clear();*/
  185.                            
  186.                            
  187.                        
  188.                     }
  189.                    
  190.                     break;
  191.                
  192.             }
  193.        
  194.         }
  195.        
  196.         private function connectionStatusHandler(e:NetStatusEvent):void
  197.         {
  198.             Cc.log(e.info.code);
  199.         }
  200.        
  201.         private function securityHandler(e:SecurityErrorEvent):void
  202.         {
  203.             Cc.log(e);
  204.         }
  205.        
  206.         static private function streamStatusHandler(e:NetStatusEvent):void
  207.         {
  208.             // End of video
  209.            
  210.             Cc.log(e.info.code);
  211.            
  212.             if (e.info.code == "NetStream.Buffer.Empty")
  213.             {
  214.                 //Main.onAppClose();
  215.             }
  216.            
  217.             Cc.log(e.info.code);
  218.         }
  219.        
  220.         private function asyncErrorHandler(e:AsyncErrorEvent):void
  221.         {
  222.             Cc.log(e.error);
  223.         }
  224.        
  225.         public function get __video():Video
  226.         {
  227.             return _video;
  228.         }
  229.    
  230.     }
  231.  
  232. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement