[ActionSprit 3.0] FMS直播

音视频流的发布(服务器)

 1 package
 2 {
 3     import flash.display.Sprite;
 4     import flash.events.NetStatusEvent;
 5     import flash.media.Camera;
 6     import flash.media.Microphone;
 7     import flash.net.NetConnection;
 8     import flash.net.NetStream;
 9     import flash.net.ObjectEncoding;
10
11     /**
12      * @author Frost.Yen
13      * @E-mail [email protected]
14      * @create 2015-7-7 下午2:47:40
15      *
16      */
17     public class LiveFMS extends Sprite
18     {
19         private var _netConnection:NetConnection = new NetConnection();
20         private var _netStream:NetStream = null;
21         private var _fms:String = "rtmp://localhost/HelloServer";
22         private var _camera:Camera = null;
23         private var _microphone:Microphone = null;
24
25         public function LiveFMS()
26         {
27             init();
28         }
29         private function init():void
30         {
31             _netConnection.objectEncoding = ObjectEncoding.AMF3;
32             _netConnection.connect(_fms);
33             _netConnection.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
34         }
35
36         private function onNetStatus(e:NetStatusEvent):void
37         {
38             trace(e.info.code);
39             switch(e.info.code)
40             {
41                 case "NetConnection.Connect.Success"://连接尝试成功
42                     publishStream();//发布流到服务器
43                     break;
44                 case "NetConnection.Connect.Closed"://成功关闭连接
45
46                     break;
47                 default:
48                     break;
49             }
50         }
51         private function publishStream():void
52         {
53             _netStream = new NetStream(_netConnection);//创建于FMS连接相关的音视频数据流对象
54             _camera = Camera.getCamera("0");//获得默认摄像头
55             _camera.setMode(320,240,15);//经试验:320*240效果较佳而占用网络流量较小,15为keyFrame
56             _camera.setQuality(100*1000,90);//100*1000为上传带宽,90为图像质量;
57             _microphone = Microphone.getMicrophone();//获得麦克风对象
58             _microphone.setUseEchoSuppression(true);//抑制回音;
59             _netStream.attachAudio(_microphone);//将音频加入到流中;
60             _netStream.attachCamera(_camera);//将视频加入到流中;
61             _netStream.publish("my_video","live");//将音视频数据发布到FMS服务器上,流名称为:my_video,发布类型为:live(实时);
62         }
63
64     }
65 }

音视频流的播放(客户端)

  1 package
  2 {
  3     import flash.display.SimpleButton;
  4     import flash.display.Sprite;
  5     import flash.events.MouseEvent;
  6     import flash.events.NetStatusEvent;
  7     import flash.media.Video;
  8     import flash.net.NetConnection;
  9     import flash.net.NetStream;
 10     import flash.net.ObjectEncoding;
 11     import flash.text.TextField;
 12
 13     /**
 14      * @author Frost.Yen
 15      * @E-mail [email protected]
 16      * @create 2015-7-10 下午3:03:11
 17      *
 18      */
 19     [SWF(width="800",height="600")]
 20     public class LiveFMSClient extends Sprite
 21     {
 22         private var _playBtn:Sprite;
 23         private var _netConnection:NetConnection = new NetConnection();
 24         private var _netStream:NetStream;
 25         private var _fms:String = "rtmp://192.168.3.106/HelloServer";
 26         public function LiveFMSClient()
 27         {
 28             initView();
 29         }
 30         private function initView():void
 31         {
 32             _playBtn = new Sprite();
 33             _playBtn.graphics.beginFill(0xcccccc);
 34             _playBtn.graphics.drawRoundRect(0,0,50,20,5,5);
 35             _playBtn.graphics.endFill();
 36             _playBtn.x = _playBtn.y = 50;
 37             _playBtn.buttonMode = true;
 38             var t:TextField = new TextField();
 39             t.text = "Play";
 40             t.autoSize = "left";
 41             t.mouseEnabled = false;
 42             t.x = 0.5*(_playBtn.width-t.width);
 43             t.y = 0.5*(_playBtn.height-t.height)
 44             _playBtn.addChild(t);
 45             this.addChild(_playBtn);
 46             _playBtn.addEventListener(MouseEvent.CLICK,onPlay);
 47         }
 48
 49         private function onPlay(e:MouseEvent):void
 50         {
 51             //_netConnection.objectEncoding = ObjectEncoding.AMF3;
 52             _netConnection.connect(_fms);
 53             _netConnection.addEventListener(NetStatusEvent.NET_STATUS,onNetStatus);
 54         }
 55         private function onNetStatus(e:NetStatusEvent):void
 56         {
 57             trace(e.info.code);
 58             switch(e.info.code)
 59             {
 60                 case "NetConnection.Connect.Success":
 61                     playStream();
 62                     break;
 63                 case "NetConnection.Connect.Closed":
 64
 65                     break;
 66
 67                 default:
 68
 69                     break;
 70             }
 71         }
 72
 73         private function playStream():void
 74         {
 75             _netStream = new NetStream(_netConnection);
 76             _netStream.bufferTime = 15;
 77             var video:Video = new Video();
 78             video.attachNetStream(_netStream);
 79             video.smoothing = true;
 80             this.addChild(video);
 81             video.x = 80;video.y = 100;
 82             _netStream.play("my_video");
 83             _netStream.addEventListener(NetStatusEvent.NET_STATUS,onStreamStatus);
 84         }
 85         private function onStreamStatus(e:NetStatusEvent):void
 86         {
 87             trace(e.info.code);
 88             switch(e.info.code)
 89             {
 90                 case "NetStream.Play.Start":
 91
 92                     break;
 93                 case "NetStream.Play.StreamNotFound":
 94                     trace("无法找到传递给 play() 方法的 FLV。");
 95                     break;
 96                 case "NetStream.Play.UnpublishNotify":
 97                     trace("服务器取消流的发布");
 98                     break;
 99                 default:
100
101                     break;
102             }
103         }
104     }
105 }
时间: 2024-08-24 07:31:27

[ActionSprit 3.0] FMS直播的相关文章

[ActionSprit 3.0] FMS服务器带宽检测

1 package { 2 3 import flash.display.Sprite; 4 import flash.net.NetConnection; 5 import flash.events.NetStatusEvent; 6 import flash.events.AsyncErrorEvent; 7 8 /** 9 * @author Frost.Yen 10 * @E-mail [email protected] 11 * @create 2015-7-16 上午10:02:15

[ActionSprit 3.0] FMS安装与测试

1.运行Flash Media Server4.5.exe,安装选项可全默认,序列号可不填:输入用户名和密码需记住,登录时要用. 2.安装完成,在安装目录C:\Program Files\Adobe\Flash Media Server 4.5\tools\下找到fms_adminConsole.htm或者fms_adminConsole.swf,这是管理文件,打开其中之一填入相应信息登录,Server Address 填本机ip,如192.168.3.106,Username和Password

[ActionSprit 3.0] FMS客户端与服务器端交互(传参)

客户端as: 1 import flash.net.NetConnection; 2 import flash.events.NetStatusEvent; 3 4 var nc:NetConnection = new NetConnection(); 5 nc.addEventListener(NetStatusEvent.NET_STATUS,onStatus); 6 nc.connect("rtmp://localhost/HelloWorld","小明");

[ActionSprit 3.0] FMS接收正在播放的视频中嵌入的描述性信息(onMetaData事件)

1 package { 2 import flash.display.MovieClip; 3 import flash.net.NetConnection; 4 import flash.events.NetStatusEvent; 5 import flash.events.MouseEvent; 6 import flash.events.AsyncErrorEvent; 7 import flash.net.NetStream; 8 import flash.media.Video; 9

[ActionSprit 3.0] FMS远程共享

1 package 2 { 3 import flash.display.Sprite; 4 import flash.events.NetStatusEvent; 5 import flash.events.SyncEvent; 6 import flash.net.NetConnection; 7 import flash.net.SharedObject; 8 import flash.text.TextField; 9 10 /** 11 * @author Frost.Yen 12 *

阿里云黄海宇:窄带高清2.0——让直播更惊艳的魔术

摘要: 2018年4月11-12日,2018亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖论坛.电视云论坛.短视频论坛.视频云论坛.新技术论坛.运营商论坛.国际云论坛等7大部分组成.在视频云论坛上,阿里云视频云高级算法专家黄海宇作了题为<窄带高清2.0--让直播更惊艳的魔术>的主题致辞. 2018年4月11-12日,2018亚太CDN峰会在北京隆重召开,大会由亚太CDN领袖论坛.电视云论坛.短视频论坛.视频云论坛.新技术论坛.运营商论坛.国际云论坛等7大部分组成.在视频云论坛上,阿里云视频

【腾讯Bugly干货分享】从0到1打造直播 App

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d42e7fd6ec467453bf58 作者:李智文 概要 分享内容: 互联网内容载体变迁历程,文字--图片/声音--视频--VR/AR----..从直播1.0秀场时代(YY),2.0游戏直播(斗鱼.虎牙.熊猫)到如今全民直播3.0泛生活娱乐时代(映客.花椒),国外直播app(Meerkat .Periscope),随着VA/AR/MR提出的沉浸式视听体验,直播4.0时

从0到1打造直播 App

转自http://dev.qq.com/topic/5811d42e7fd6ec467453bf58 概要 分享内容: 互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——……..从直播1.0秀场时代(YY),2.0游戏直播(斗鱼.虎牙.熊猫)到如今全民直播3.0泛生活娱乐时代(映客.花椒),国外直播app(Meerkat .Periscope),随着VA/AR/MR提出的沉浸式视听体验,直播4.0时代很快就能到来. 在这个全民娱乐的时代,直播已经火得不要不要的,各大公司都有自己

视频直播的发展趋势分析

视频直播的分析与发展 在讲视频直播之前,先讲一讲直播.直播是怎么来的呢?从传播消息的角度上来说,视频和文字.图片.音乐一样都是传播消息的手段,古时以文字传播消息,之后出现了图片和音乐,再之后视频开始流行.出现这种演变的原因是什么呢?我想主要是由于读者的需求日益提高和传播技术的不断发展.读者不满足于当前的文字阅读,由此出现了图片与音乐,到后来图片与音乐也无法满足日益增长的需求,则出现了视频.视频具有文字.图片.音乐不具有的优势:传递的信息多,更让人有代入感,给观众更综合的体验.虽然视频有着无可比拟