公司要用flash实现实况转播,好不容易把实验品搞定.总结下~~~
在flash页面上放置一个按钮,点击按钮就将本地的摄像头和麦克风捕获的信息发送到服务器.
连接到服务器步骤.
1. 添加监听,连接服务器.
nc = new NetConnection();
nc.client = new Client();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
nc.connect(strServer);
2. 发布视频
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
ns.client = new CustomClient();
camera = Camera.getCamera();
micophone = Microphone.getMicrophone();
if (camera != null && micophone != null) {
camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
micophone.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
ns.attachCamera( camera );
ns.attachAudio( micophone );
ns.publish(strName,"record");
} else {
trace("Please check your camera and microphone");
}
得到本地的摄像头和麦克风之后,就可以通过netstream的publish方法直接发送.
代码:
package{
import flash.net.NetConnection;
import flash.net.NetStream;
import flash.events.NetStatusEvent;
import flash.events.MouseEvent;
import flash.events.ActivityEvent;
import flash.display.MovieClip;
import flash.media.Camera;
import flash.media.Microphone;
import fl.controls.Button;
import fl.controls.TextInput;
public class ServerStream extends MovieClip{
var nc:NetConnection;
var stream:NetStream;
var ns:NetStream;
//var video:Video;
private var camera:Camera; //摄像头变量
private var micophone:Microphone; //麦克风变量
private var strName:String;
private var strServer:String;
private var strStream:String;
//构造函数
public function ServerStream(){
strName = "livestream";
strServer = "rtmp://localhost/live";
strStream = "live";
startBtn.addEventListener(MouseEvent.CLICK,StartBtnHandle);
}
public function StartBtnHandle(evt:MouseEvent):void{
startBtn.enabled = false;
trace("StartBtnHandle");
ListenAndConnection();
}
//添加监听,然后连接到服务器.
public function ListenAndConnection(){
nc = new NetConnection();
nc.client = new Client();
nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
nc.connect(strServer);
}
//发布视频
private function publishLiveStream():void {
ns = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
ns.client = new CustomClient();
camera = Camera.getCamera();
micophone = Microphone.getMicrophone();
if (camera != null && micophone != null) {
camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
micophone.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
ns.attachCamera( camera );
ns.attachAudio( micophone );
// start publishing
// triggers NetStream.Publish.Start
trace(strName+strStream);
ns.publish(strName,"record");
} else {
trace("Please check your camera and microphone");
}
}
public function Refreash():void{
if (camera != null){
//camera.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
ns.attachCamera(camera);
}
if (micophone != null) {
//micphone.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
ns.attachAudio(micophone);
}
}
//处理ActivityEvent发出的事件
private function activityHandler(event:ActivityEvent):void {
trace("activityHandler: " + event);
trace("activating: " + event.activating);
}
//处理NetConnection和NetStreme发出的事件
private function netStatusHandler(event:NetStatusEvent):void{
trace("connected is: " + nc.connected );
trace("event.info.level: " + event.info.level);
trace("event.info.code: " + event.info.code);
switch (event.info.code){
case "NetConnection.Connect.Success":
trace("Congratulations! you're connected");
publishLiveStream();
// createPlayList(nc);
// instead you can also call createPlayList() here
break;
case "NetConnection.Connect.Failed":
case "NetConnection.Connect.Rejected":
trace ("Oops! the connection was rejected");
break;
case "NetStream.Play.Stop":
trace("The stream has finished playing");
break;
case "NetStream.Play.StreamNotFound":
trace("The server could not find the stream you specified");
break;
case "NetStream.Publish.BadName":
trace("The stream name is already used");
break;
case "NetStream.Publish.Start":
trace("Adding metadata to the stream");
// when publishing starts, send the metadata
//var metaData:Object = new Object();
//metaData.title = "liveDJconcert";
//metaData.width = 400;
//metaData.height = 200;
//stream.send("@setDataFrame", "onMetaData", metaData);
break;
}
}
}
}
class Client{
public function onBWCheck( rest):Number{
return 0;
}
public function onBWDone( rest):void{
var p_bw:Number;
if (rest.length > 0)
p_bw = rest[0];
trace("bandwidth = " + p_bw);
}
}
class CustomClient{
public function onMetaData(info:Object):void{
trace("width: " + info.width);
trace("height: " + info.height);
}
}
分享到:
相关推荐
《ActionScript 3.0 语言和组件参考》概述 《ActionScript 3.0 语言参考》是 Flash® Player 和 Adobe AIR™ 应用程序编程接口 (API) 的参考手册。 此版本包括支持 Adobe AIR 运行时环境的新 ActionScript 类、...
《Flash ActionScript 2.0 语言参考》是学习和掌握Flash编程不可或缺的资源,尤其对于初学者和希望深入理解ActionScript的开发者来说,它提供了详尽的语法和功能介绍。ActionScript是Adobe Flash平台上用于创建交互...
ActionScript 基础知识点总结 ActionScript 是 Flash 内置的编程语言,用它为动画编程,可以实现各种动画特效、对影片的良好控制、强大的人机交互以及与网络服务器的交互功能。ActionScript 是一门吸收了 C++、Java...
《Flash ActionScript3.0教程示例(从入门到精通)》是一本全面解析ActionScript3.0编程语言在Flash平台上的应用的教程。ActionScript3.0是Adobe Flash Professional中的核心编程语言,用于创建交互式动画、游戏、富...
《ActionScript3.0 Game Programming》是一本专为游戏开发者设计的权威教程,中文版的出版使得更多中国读者能够深入理解和掌握ActionScript3.0在游戏开发中的应用。这本书不仅覆盖了ActionScript的基础语法和面向...
### ActionScript基础教程知识点解析 #### 一、ActionScript概览与基本语法 ActionScript是一种强大的脚本语言,主要用于Adobe Flash平台,使开发者能够创建动态交互式内容、游戏和应用程序。ActionScript的发展...
ActionScript是一种基于ECMAScript(JavaScript的标准化版本)的编程语言,主要被应用于Adobe Flash平台,用于创建交互式内容、富互联网应用程序(RIA)以及动画。在“ActionScript开发技术大全”这个主题中,我们...
ActionScript是一种基于ECMAScript规范的编程语言,主要用于开发Adobe Flash平台上的交互式内容,如网页游戏、动画和应用程序。这个“Actionscript中文帮助文档”是开发者在学习和使用ActionScript 3.0时的重要参考...
ActionScript 2.0 是 Adobe Flash 平台中用于创建交互式内容的主要脚本语言。在 Flash 中,ActionScript 允许开发者编写控制动画、处理用户输入、与服务器通信等功能的代码。下面是关于 ActionScript 2.0 中变量、...
Spring ActionScript 是一个开源框架,它将 Spring 框架的核心概念和功能带入了 Adobe Flex 和 ActionScript 开发环境中。这个入门例子旨在帮助初学者理解如何在 Flex 或 ActionScript 项目中应用 Spring ...
"LayaAir IDE"扩展提供代码提示、语法高亮和编译功能,"AS3 & MXML"扩展则用于ActionScript的语法支持,而"Debugger for Chrome"扩展允许我们在Chrome浏览器中直接调试我们的游戏。 在“LayaAir-ActionScript-Debug...
《ActionScript开发技术大全》是一本全面覆盖ActionScript编程语言的教程,旨在帮助读者深入理解和掌握这一关键的脚本语言,特别是在Flash和Flex应用开发中的使用。ActionScript是Adobe Flash平台的核心,它使得动态...
本书是国内第一本“面向原因式”(Why-Oriented Book)、全面系统介绍Flash ActionScript 3的书籍。全书共分为5个部分。第一部分:ActionScript 3语言基础;第二部分:ActionScript 3 面向对象编程;第三部分:...
ActionScript 3.0是Adobe Flash Professional、Flash Player以及Adobe AIR中的主要编程语言,用于创建交互式内容、游戏和富互联网应用程序(RIA)。本教程针对ActionScript 3.0的动画制作进行了深入讲解,旨在帮助...
在IT领域,Flash和ActionScript是 Adobe Animate (曾经名为Flash Professional) 中的关键组成部分,用于创建交互式动画、游戏和富互联网应用程序。本资源包包含了关于"flash+actionscript学习的实例和教程",旨在...
《ActionScript3.0 Cookbook中文版》是一本专注于ActionScript3.0编程技术的实践指南。ActionScript是Adobe Flash平台上广泛使用的脚本语言,尤其在创建互动内容、游戏和富互联网应用程序(RIA)中扮演着核心角色。...
第1篇 ActionScript3.0语言基础 第1章 ActionScript3.0概述 第2章 搭建ActionScript3.0开发环境 第3章 ActionScript3.0语法 第2篇 ActionScript3.0面向对象特性 第4章 ActionScript3.0面向对象编程 第...
《ActionScript 2.0 3.0完全手册》是一本深入探讨ActionScript编程语言的权威指南,涵盖了从ActionScript 2.0到3.0的全面内容。ActionScript是Adobe Flash平台上用于创建动态交互式内容的核心编程语言,广泛应用于...
《ActionScript权威指南》是关于ActionScript编程语言的一本详尽深入的参考书籍。ActionScript是一种基于ECMAScript规范的脚本语言,主要用于Adobe Flash平台,包括Flash Player和Adobe AIR,广泛应用于创建交互式...