- 浏览: 500046 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
michao:
大哥,还有aperture.exe吗? 发我一份,找不到呀,m ...
使用aperture框架让AS3与C++通信,执行本地代码 -
Aaron-Joe-William:
文件被删除了。下不了。
SQLite 数据库加密的一种解决方案 -
hanmiao:
樓主的文章不就是來自IBM Developers里的http: ...
mina 入门 -
howesen:
断包与粘包问题,需要处理下就好了
mina接收数据不全(2) -
sniciq:
git clone --recursive git://git ...
ESB学习笔记(Spring Integration实战)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" height="312" width="328" creationComplete="init()">
<mx:Script>
<![CDATA[
//预定义声明
import mx.controls.Alert;
import mx.events.SliderEvent;
//创建一个基本的网络连接对象
private var vi:Video;
private var cam:Camera; //定义一个摄像头
private var inNs:NetStream;
private var outNs:NetStream;
private var nc:NetConnection;
private var mic:Microphone; //定义一个麦克风
private var _duration:Number; //视频播放时间
private var playPosition:Number; //定义播放进度位置
private var soundPosition:Number; //定义声音大小控制条的位置
private var flag:Boolean = false;
private var lastVideoName:String = ""; //视频录制后保存的名字
private var _url:String = "rtmp://localhost/oflaDemo";
public function init():void{
setupCamera(); //初始化摄像头信息
}
//开始录制按扭点击
public function clickConnect():void{
nc = new NetConnection();
nc.client = this ;
nc.addEventListener(NetStatusEvent.NET_STATUS,nsHandler);
nc.connect(_url); //连接red5服务器
}
public function nsHandler(evt:NetStatusEvent):void{
if (evt.info.code == "NetConnection.Connect.Success"){ //如果连接成功
playClick();
}else{
Alert.show("连接失败");
}
}
//开始录制
public function playClick():void{
if(vi != null){
vi.clear();
vdisplay.removeChild(vi);
vi = new Video();
vi.width = 320;
vi.height = 240;
vi.attachCamera(cam);
vdisplay.addChild(vi);
}
outNs = new NetStream(nc);
outNs.attachCamera(cam); //把摄像头存入outNs
outNs.attachAudio(mic); //把麦克风存入outNs
lastVideoName = "red5RecordDemo_" + Math.random()+getTimer();
outNs.publish(lastVideoName, "record");
startRec.enabled = false;
stopRec.enabled = true;
}
//停止录制
public function stopClick():void{
//关闭ns与red5的连接
outNs.close();
vi.clear();
vdisplay.removeChild(vi);
//锁定开始按键使其生效
startRec.enabled = true;
//锁定停止按键使其失效
stopRec.enabled = false;
}
//录制完以后播放
public function playLastVideo():void{
if(nc!=null){
addEventListener(Event.ENTER_FRAME,onEnterFrame);
inNs = new NetStream(nc);
//定义onMetaData,获取视频相关数据
var customClient:Object = new Object();
customClient.onMetaData = function(metadata:Object):void{
_duration = metadata.duration; //获取视频持续时间
t_sh.maximum = _duration;
}
inNs.client = customClient;
//删除原_localVideo,便于在录制和播放视频之间切换
vi = new Video();
vi.width = 320;
vi.height = 240;
vi.attachNetStream(inNs);
vdisplay.addChild(vi);
inNs.play(lastVideoName+".flv");
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
}
public function onBWDone():void {
}
//初始化摄像头
public function setupCamera():void{
//启动摄像头
cam = Camera.getCamera();
if(cam != null){
cam.addEventListener(StatusEvent.STATUS,onStatusHandler);
cam.addEventListener(ActivityEvent.ACTIVITY,onActiveHandler);
cam.setMode(320,240,30);
cam.setQuality(0,70); //设置清晰度
vi = new Video();
vi.width = 320;
vi.height = 240;
vi.attachCamera(cam);
vdisplay.addChild(vi);
}
mic = Microphone.getMicrophone();
if(mic != null){
mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据
mic.gain = 80; //设置麦克风声音大小
}
}
private function onActiveHandler(event:ActivityEvent):void
{
if(!cam.muted){ //判断摄像头存不存在
startRec.enabled = true;
}else{
Alert.show("错误:无法链接到活动摄像头!")
}
cam.removeEventListener(StatusEvent.STATUS,onStatusHandler);
}
private function onStatusHandler(event:StatusEvent):void{
if(!cam.muted){ //判断摄像头存不存在
startRec.enabled = true;
}else{
Alert.show("错误:无法链接到活动摄像头!")
}
cam.removeEventListener(StatusEvent.STATUS,onStatusHandler);
}
public function thumbPress(event:SliderEvent):void{
inNs.togglePause();
removeEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function thumbChanges(event:SliderEvent):void{
playPosition = t_sh.value; //当前播放视频进度的位置=当前播放进度条的位置
inNs.seek(playPosition);
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function thumbRelease(event:SliderEvent):void{ //释放mouse后执行
inNs.seek(playPosition); //查找当前进度条位置
inNs.togglePause();
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
public function onEnterFrame(event:Event):void{
if(_duration > 0 && inNs.time > 0){ //如果视频时间和正在播放视频的时间大于0
t_sh.value =inNs.time;
lbtime.text = formatTimes(inNs.time) + " / "+ formatTimes(_duration);
}
if(formatTimes(inNs.time)==formatTimes(_duration)){ //如果播放完毕,则关毕流,初始化摆放时间的label
if(flag==true){ //如果是加载,就不执行 ||false代表是加载,true代表是播放结束
removeEventListener(Event.ENTER_FRAME,onEnterFrame);
inNs.close();
lbtime.text = "0:00 / "+ formatTimes(_duration);
}
setTimeout(function():void{flag = true;},1000);
}
}
//时间格式操作
private function formatTimes(value:int):String{
var result:String = (value % 60).toString();
if (result.length == 1){
result = Math.floor(value / 60).toString() + ":0" + result;
} else {
result = Math.floor(value / 60).toString() + ":" + result;
}
return result;
}
//声音音量控制
private function sound_thumbChanges(event:SliderEvent):void{
soundPosition = th_sound.value;
}
private function sound_thumbRelease(event:SliderEvent):void{
vdisplay.volume = soundPosition;
}
]]>
</mx:Script>
<mx:VideoDisplay x="0" y="0" width="324.5" height="240" id="vdisplay"/>
<mx:Button x="10" y="250" label="开始录制" id="startRec" click="clickConnect()" enabled="false" />
<mx:Button x="10" y="280" label="停止录制" width="70" id="stopRec" click="stopClick()" enabled="false" />
<mx:Button x="253" y="268" label="播放" click="playLastVideo()" />
<mx:HSlider x="98" y="248" width="143" id="t_sh" thumbPress="thumbPress(event)" thumbRelease="thumbRelease(event)" change="thumbChanges(event)"/>
<mx:Label x="237" y="242" text="0:00/0:00" width="89" textAlign="center" height="18" id="lbtime"/>
<mx:HSlider x="98" y="278" width="91" id="th_sound" minimum="0" maximum="1" value="{vdisplay.volume}" change="sound_thumbChanges(event)" thumbRelease="sound_thumbRelease(event)"/>
<mx:Label x="187" y="270" text="sound" height="20" width="44" textAlign="center"/>
</mx:Application>
发表评论
-
十个Flex/Air疑难杂症及解决方案简略
2010-05-31 17:17 3294最近去一家台企面 ... -
Windows环境下配置+运行red5源码+AS3连接red5简单示例
2010-04-19 13:39 5145Windows环境下配置+运行red5源码+AS3连接red5 ... -
使用aperture框架让AS3与C++通信,执行本地代码
2010-04-08 16:48 3193我们都知道,AIR的效果是非常出色的,这也是大家喜欢她的原因, ... -
SQLITE入门至精通
2010-04-07 11:13 2961关键 ... -
教你解析FLEX JSON中的一个问题 关于键值 和键
2010-04-01 15:25 2265字符串:message = ' "param&quo ... -
air写文件保存在安装目录
2010-03-31 15:46 3173AIR中..保存文件我们般会像下面这样操作 var f ... -
弱弱的一个小问题,bitmapdata pngencoder base64 bytearray
2010-03-31 14:16 1115好久没写东东了,呵呵。随便写点点。关于bitmapdata如何 ... -
FLASH教程:SWF间的双向通信
2010-03-02 18:23 1315假设有一个主 SWf 名为 m ... -
如何把as文件生成swf格式文件
2010-03-02 18:22 5197一,从http://opensource.adobe.com/ ... -
Flex数据交互方法 :httpservice, webservice, RemoteObject, socket
2010-02-27 17:06 1880【转载】 文章分类:Flash编程 http://h ... -
理解Flash Player 9垃圾回收机制
2010-02-02 18:27 1036理解Flash Player 9垃圾回 ... -
BlazeDS入门教程-很详细-赞原创作者一个
2010-01-11 23:51 1678什么是BlazeDS呢?BlazeDS是一个基于服务器的Ja ... -
一些漂亮的Flex主题下载
2010-01-11 10:31 6112一些漂亮的Flex主题下载1Digg meWindows Cl ... -
通过Stratus 服务器在Flash Player中使用RTMFP 开发 点对点应用(一)
2010-01-08 17:43 5357作者:Jozsef Vass 译者:巴巴鲁 ... -
ActionScript 3.0著名开源库 大集合
2009-12-29 17:26 1986这篇文章开始于对Adrian ... -
Flex 读取XML配置文件总结
2009-11-19 11:45 1943在Flex中我 ... -
一个list定义组件,网上找了很久没有,自己做了一个。
2009-10-29 11:55 1192一个list定义组件,网上找了很久没有,自己做了一个。希望对大 ... -
如何使用Flex RemoteObject components 与JAVA交互
2009-10-08 18:04 52392008-12-25 | 22:53分类:前端开发 ... -
flex 蒙板 遮罩
2009-09-11 17:09 3838方法一 <mx:Image source=&q ... -
如何自定义FLEX3的loading进度条
2009-09-05 10:17 1712第一种:修改下载进度的文字为中文 建立扩展至 mx.prel ...
相关推荐
flex进行开发开发的视频语音文字聊天程序
Flex Red5 Tomcat 视频语音录制和播放 在网上找,总发现文章都一样,而且都是不完整的, 这里希望能够给跟我一样学习中的朋友一些帮助, 详细说明在压缩文件中有。 Flex+Red5+Tomcat视频播放器: ...
利用FLEX编写的摄像头录制视频文件,并上传到FMS服务器,同时就如何安装FMS服务器及配置进行说明.
使用flex builder 开发的一个视频直播于推流的项目。
这是一个完整的FLEX开发在线视频会议系统,功能齐全,涵盖WEB和网络通信
首先下载fms服务器安装好,并在fms安装目录的applications目录下新建一个test_video文件夹目录,一定要与flext程序中rtmp://127.0.0.1/test_video的test_video要一致,fms服务器启动后,执行flex程序,即可实现
Flex在线拍照功能:Flex+flash ;Flex+flash; Flex+flash ;Flex+flash
详细介绍了flex在线阅读开发,类似百度文库
FLEX在线拍照.rarFLEX在线拍照.rarFLEX在线拍照.rarFLEX在线拍照.rarFLEX在线拍照.rarFLEX在线拍照.rar
包括:1)FLEX项目源文件;2)Java项目源文件;3)数据库文件(access,修改成sqlserver很简单);4)使用说明。 通过看使用说明,配置起来很简单。FLEX项目源文件包括客户端和服务器端两个分。很不错
flex4.5在线视频播放器,能够定位播放位置,回传参数与js数据交互
利用Flex和PHP创建网站视频发布系统.doc利用Flex和PHP创建网站视频发布系统.doc利用Flex和PHP创建网站视频发布系统.doc利用Flex和PHP创建网站视频发布系统.doc利用Flex和PHP创建网站视频发布系统.doc利用Flex和PHP...
flex在线发布工具badger可以把.air打包在线发布安装 方便用户安装
flex制作的在线拍照程序 可以调用本地摄像头,进行拍照,可以重拍和保存
基于Flex的视频音频录制源码,服务器端使用mfs,修改rmpt的上传地址,在mfs的application目录下创建相应的项目文件夹即可
Java+Flex在线电影网站代码.zip java网站 flex播放视频
flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图flex 地图...
FluorineFx+Flex视频聊天室源代码,基于flex建立视频的简单视频聊天室
初学者的天堂,flex基础教程 flex actionScipt脚本的讲解