- 浏览: 1454075 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (564)
- 算法 (7)
- 流金岁月 (1)
- Javascript (30)
- actionscript (108)
- as3.0 game (14)
- flex (84)
- fms2 (27)
- 正则表达式 (7)
- 开源组件代码(as3.0) (1)
- Pv3d (13)
- Cairngorm (4)
- vbs (54)
- VB程序设计 (26)
- 计算机应用与维护 (4)
- 职场实用穿衣技巧 (3)
- 历史风云 (15)
- 淡泊明志,宁静致远 (12)
- 情感 (26)
- 杂谈 (41)
- 越南风 (14)
- DirectX (9)
- Dev-cpp (11)
- 回望百年 (2)
- 建站经验 (2)
- Python (24)
- 网络赚钱 (4)
- php (2)
- html (1)
- ob0短址网 (1)
- ob0.cn (1)
- wordpress (1)
- pandas logistic (1)
- haxe (1)
- opencv (1)
- 微信小程序 (3)
- vue (3)
- Flutter (1)
最新评论
-
GGGGeek:
第一个函数滚动监听不起作用,onPageScroll可以
微信小程序--搜索框滚动到顶部时悬浮 -
naomibyron:
解决办法:工具 -> 编译选项 -> 编译器 ...
dev-c++中编译含WINSOCK的代码出现错误的解决方法 -
haichuan11:
这个…… 代码不全真的是让人很憋屈的感觉啊
actionScript 3.0 图片裁剪及旋转 -
chenyw101:
老兄能留个QQ号吗?具体的我有些东西想请教下你
用VB制作网站登陆器 -
yantao1943:
貌似有点问题,只派发一次事件啊
使用ActionScript 2.0或ActionScript 3.0处理音频文件的提示点(cue
<?xml version=”1.0″ encoding=”utf-8″?>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” creationComplete=”playinit()” width=”366″ height=”350″>
<mx:Script>
<![CDATA[
import mx.events.SliderEvent;
import mx.events.VideoEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.core.UIComponent;
import flash.events.StatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Camera;
import flash.media.Microphone;
import flash.net.NetConnection;
//由于fms使用的是amf0而flex3中的as3默认使用的是amf3.所以要让flex使用AFM0
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
//视频服务端地址
private var _videoServerURL:String = “rtmp://192.168.0.107/test”;
private var _camera:Camera; //定义一个摄像头
private var _mic:Microphone; //定义一个麦克风
private var _localVideo:Video; //定义一个本地视频
private var _netConnection:NetConnection;
private var _outStream:NetStream; //定义一个输出流
private var _inStream:NetStream; //定义一个输入流
private var isplaying:Boolean=false; //定义是否正在播放标记
private var isrecing:Boolean = false; //定义是否正在录制标记
private var ispauseing:Boolean = false; //定义是否正在暂停标记
private var _duration:Number; //定义视频持续时间
private var playPosition:Number; //定义播放进度位置
private var soundPosition:Number; //定义声音大小控制条的位置
private function playinit():void{
t_hs_control.enabled=false;
t_btn_play.enabled = false;
t_btn_stop.enabled = false;
t_btn_rec.enabled = false;
t_btn_save.enabled = false;
t_lbl_rec.visible = false;
initCameraAndMic(); //初始化摄像头
}
//初始化摄像头
//判断是否存在摄像头和访问权限
private function initCameraAndMic():void
{
_camera = Camera.getCamera();
if(_camera != null)
{
_camera.addEventListener(StatusEvent.STATUS,__onStatusHandler);
_camera.setMode(320,420,30);
//t_flv_video.attachCamera(_camera);
_localVideo = new Video();
_localVideo.width = 320;
_localVideo.height = 240;
_localVideo.attachCamera(_camera);
t_flv_video.addChild(_localVideo);
}
_mic = Microphone.getMicrophone();
if(_mic != null)
{
//未添加侦听麦克连接状态
//设置本自本地的麦克风的音频传送到本地系统扬声器
/*
_mic.setUseEchoSuppression(true);
_mic.setLoopBack(true);
*/
_mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据
_mic.gain = 80; //设置麦克风声音大小
}
}
//开始录制视频
//检测网络连接状态
private function beginOrShowRecVideo():void
{
_netConnection = new NetConnection();
_netConnection.addEventListener(NetStatusEvent.NET_STATUS,__onNetStatusHandler);
_netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR,__onSecurityErrorHandler);
_netConnection.connect(_videoServerURL);
}
//录制视频,向服务器传送视频及音频流
private function beginRecConnectStream():void
{
if(_localVideo != null)
{
_localVideo.clear();
t_flv_video.removeChild(_localVideo);
_localVideo = new Video();
_localVideo.width = 320;
_localVideo.height = 240;
_localVideo.attachCamera(_camera);
t_flv_video.addChild(_localVideo);
}
_outStream = new NetStream(_netConnection);
_outStream.attachCamera(_camera);
_outStream.attachAudio(_mic);
_outStream.publish(”testVideo”,”record”);
}
//播放视频
private function showRecConnectStream():void
{
_inStream = new NetStream(_netConnection);
_inStream.addEventListener(NetStatusEvent.NET_STATUS,__onNetStatusHandler);
_inStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,__onStreamErrorHandler);
//定义onMetaData,获取视频相关数据
var customClient:Object = new Object();
customClient.onMetaData = function(metadata:Object):void
{
_duration = metadata.duration; //获取视频持续时间
t_hs_control.maximum = _duration; //设置播放进度条最大值
}
_inStream.client = customClient;
//删除原_localVideo,便于在录制和播放视频之间切换
_localVideo.clear();
t_flv_video.removeChild(_localVideo);
_localVideo = new Video();
_localVideo.width = 320;
_localVideo.height = 240;
_localVideo.attachNetStream(_inStream);
_inStream.play(”testVideo”);
t_flv_video.addChild(_localVideo);
}
//播放按钮点击后事件:播放视频,同时分析是否播放来调整BUTTON上的标签,显示为播放或者暂停;
//并监听播放器
private function flvplay(event:Event):void{
t_hs_control.enabled=true;
t_btn_stop.enabled = true;
t_btn_rec.enabled = false;
if(!isplaying)
{
isplaying = true;
beginOrShowRecVideo();
}
else
{
_inStream.togglePause(); //自动在停止和播放之间切换
}
if(isplaying)
{
if(ispauseing){
t_btn_play.label=”播放”
}else {
t_btn_play.label=”暂停”
}
ispauseing = !ispauseing;
}
addEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//停止按钮和视频播放完毕
//重设一些值变量、按钮enabled值等
private function resetSomeParam():void
{
_inStream.close();
t_btn_play.label = “播放”;
t_lbl_playtime.text = “0:00 / “+ formatTimes(_duration);
t_hs_control.value = 0;
isplaying = false;
ispauseing = false;
t_hs_control.enabled=false;
t_btn_rec.enabled = true;
t_btn_stop.enabled = false;
}
//停止播放按钮点击事件:停止视频,同时调整相关BUTTON上的标签
private function flvStop(event:Event):void
{
resetSomeParam();
removeEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//拉动进度条
private function thumbPress(event:SliderEvent):void{
_inStream.togglePause();
removeEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//进度条改变后,得到的值赋予PLAYPOSITION;
private function thumbChanges(event:SliderEvent):void{
playPosition = t_hs_control.value;
}
//放开进度条,再把PLAYPOSITION的值发给播放器;
private function thumbRelease(event:SliderEvent):void{
_inStream.seek(playPosition);
_inStream.togglePause();
addEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//声音音量控制
private function sound_thumbChanges(event:SliderEvent):void{
soundPosition = hs_sound.value;
}
private function sound_thumbRelease(event:SliderEvent):void{
t_flv_video.volume = soundPosition;
}
//格式化时间
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;
}
//录制按钮点击后事件:录制视频,同时分析是否播放来调整BUTTON上的标签,显示为开始录制或者停止录制;
//并监听播放器
private function recVideo(event:MouseEvent):void
{
if(!isrecing) //开始录制
{
isrecing = true;
t_btn_rec.label = “停止录制”;
t_btn_play.enabled = false;
t_btn_save.enabled = false;
t_lbl_rec.visible = true;
beginOrShowRecVideo();
}
else //停止录制
{
isrecing = false;
t_btn_rec.label = “开始录制”;
t_btn_play.enabled = true;
t_btn_save.enabled = true;
t_lbl_rec.visible = false;
_outStream.close();
}
}
//检测摄像头权限事件
private function __onStatusHandler(event:StatusEvent):void
{
if(!_camera.muted)
{
t_btn_rec.enabled = true;
}
else
{
trace(”错误:无法链接到活动摄像头!”)
}
_camera.removeEventListener(StatusEvent.STATUS,__onStatusHandler);
}
//网络链接事件
//如果网络连接成功,开始录制或观看视频
private function __onNetStatusHandler(event:NetStatusEvent):void
{
switch (event.info.code)
{
case “NetConnection.Connect.Success”:
if(isrecing)
{
beginRecConnectStream();
}
else
{
showRecConnectStream();
}
break;
case “NetConnection.Connect.Failed”:
trace(”连接失败!”);
break;
case “NetStream.Play.StreamNotFound”:
trace(”Stream not found: ” + event);
break;
}
}
private function __onSecurityErrorHandler(event:SecurityErrorEvent):void
{
trace(”securityErrorHandler:” + event);
}
private function __onStreamErrorHandler(event:AsyncErrorEvent):void
{
trace(event.error.message);
}
//播放视频实时事件
//实时更改播放进度条值和播放时间值,当视频播放完成时删除实时侦听事件并重新设置一些初始值
private function __onEnterFrame(event:Event):void
{
if(_duration > 0 && _inStream.time > 0)
{
t_hs_control.value =_inStream.time;
t_lbl_playtime.text = formatTimes(_inStream.time) + ” / “+ formatTimes(_duration);
}
if(_inStream.time == _duration)
{
removeEventListener(Event.ENTER_FRAME,__onEnterFrame);
resetSomeParam();
}
}
]]>
</mx:Script>
<!–通过HTTPSERVICE来分析XML,然后得出RESULT,结果的反馈在SCRIPT里 –>
<!–此为读取XML扩展内容
<mx:HTTPService id=”videoserver” url=”assets/videos.xml” result=”readXml(event)”/>
–>
<!–主要的视频播放窗口 设置ID为FLVVIDEO,这个很重要,其他坐标可以随自己喜欢 –>
<mx:Panel x=”12″ y=”10″ width=”342″ height=”282″ layout=”absolute”>
<mx:VideoDisplay id=”t_flv_video” x=”1″ y=”1″ width=”320″ height=”240″/>
<mx:Label x=”243.5″ y=”6″ text=”正在录制中…” id=”t_lbl_rec” color=”#666666″ fontSize=”12″/>
</mx:Panel>
<!–播放器的播放进度条,用FLEX自带的HSLIDER来表现播放进度,同时可以拖动影片 –>
<mx:HSlider id=”t_hs_control” x=”12″ y=”296″ minimum=”0″
thumbPress=”thumbPress(event)”
thumbRelease=”thumbRelease(event)”
change=”thumbChanges(event)” />
<!–播放器声音控制 –>
<mx:HSlider id=”hs_sound” x=”260″ y=”295″ width=”80″
minimum=”0″ maximum=”1″
thumbRelease=”sound_thumbRelease(event)”
change=”sound_thumbChanges(event)”
value=”{t_flv_video.volume}” />
<!– 播放按钮,根据是否在播放,按钮显示为:播放 或者 暂停 –>
<mx:Button id=”t_btn_play” x=”22″ y=”320″ click=”flvplay(event)” label=”播放” fontSize=”12″/>
<!– 播放按钮,停止播放影片 –>
<mx:Button id=”t_btn_stop” label=”停止” x=”85″ y=”320″
click=”flvStop(event)” fontSize=”12″ enabled=”true”/>
<!– 时间显示 –>
<mx:Label x=”170″ y=”300″ id=”t_lbl_playtime”
text=”0:00 / 0:00″
color=”#ffffff”/>
<!–录制按钮,根据是否在录制,按钮显示为:开始录制 或者 停止录制–>
<mx:Button x=”210″ y=”320″ label=”开始录制” click=”recVideo(event)” fontSize=”12″ id=”t_btn_rec”/>
<!–保存视频按钮–>
<mx:Button x=”299″ y=”320″ label=”保存” fontSize=”12″ id=”t_btn_save” enabled=”true”/>
</mx:Application>
<mx:Application xmlns:mx=”http://www.adobe.com/2006/mxml” layout=”absolute” creationComplete=”playinit()” width=”366″ height=”350″>
<mx:Script>
<![CDATA[
import mx.events.SliderEvent;
import mx.events.VideoEvent;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.core.UIComponent;
import flash.events.StatusEvent;
import flash.events.SecurityErrorEvent;
import flash.media.Camera;
import flash.media.Microphone;
import flash.net.NetConnection;
//由于fms使用的是amf0而flex3中的as3默认使用的是amf3.所以要让flex使用AFM0
NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0;
//视频服务端地址
private var _videoServerURL:String = “rtmp://192.168.0.107/test”;
private var _camera:Camera; //定义一个摄像头
private var _mic:Microphone; //定义一个麦克风
private var _localVideo:Video; //定义一个本地视频
private var _netConnection:NetConnection;
private var _outStream:NetStream; //定义一个输出流
private var _inStream:NetStream; //定义一个输入流
private var isplaying:Boolean=false; //定义是否正在播放标记
private var isrecing:Boolean = false; //定义是否正在录制标记
private var ispauseing:Boolean = false; //定义是否正在暂停标记
private var _duration:Number; //定义视频持续时间
private var playPosition:Number; //定义播放进度位置
private var soundPosition:Number; //定义声音大小控制条的位置
private function playinit():void{
t_hs_control.enabled=false;
t_btn_play.enabled = false;
t_btn_stop.enabled = false;
t_btn_rec.enabled = false;
t_btn_save.enabled = false;
t_lbl_rec.visible = false;
initCameraAndMic(); //初始化摄像头
}
//初始化摄像头
//判断是否存在摄像头和访问权限
private function initCameraAndMic():void
{
_camera = Camera.getCamera();
if(_camera != null)
{
_camera.addEventListener(StatusEvent.STATUS,__onStatusHandler);
_camera.setMode(320,420,30);
//t_flv_video.attachCamera(_camera);
_localVideo = new Video();
_localVideo.width = 320;
_localVideo.height = 240;
_localVideo.attachCamera(_camera);
t_flv_video.addChild(_localVideo);
}
_mic = Microphone.getMicrophone();
if(_mic != null)
{
//未添加侦听麦克连接状态
//设置本自本地的麦克风的音频传送到本地系统扬声器
/*
_mic.setUseEchoSuppression(true);
_mic.setLoopBack(true);
*/
_mic.setSilenceLevel(0,-1); //设置麦克风保持活动状态并持续接收集音频数据
_mic.gain = 80; //设置麦克风声音大小
}
}
//开始录制视频
//检测网络连接状态
private function beginOrShowRecVideo():void
{
_netConnection = new NetConnection();
_netConnection.addEventListener(NetStatusEvent.NET_STATUS,__onNetStatusHandler);
_netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR,__onSecurityErrorHandler);
_netConnection.connect(_videoServerURL);
}
//录制视频,向服务器传送视频及音频流
private function beginRecConnectStream():void
{
if(_localVideo != null)
{
_localVideo.clear();
t_flv_video.removeChild(_localVideo);
_localVideo = new Video();
_localVideo.width = 320;
_localVideo.height = 240;
_localVideo.attachCamera(_camera);
t_flv_video.addChild(_localVideo);
}
_outStream = new NetStream(_netConnection);
_outStream.attachCamera(_camera);
_outStream.attachAudio(_mic);
_outStream.publish(”testVideo”,”record”);
}
//播放视频
private function showRecConnectStream():void
{
_inStream = new NetStream(_netConnection);
_inStream.addEventListener(NetStatusEvent.NET_STATUS,__onNetStatusHandler);
_inStream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,__onStreamErrorHandler);
//定义onMetaData,获取视频相关数据
var customClient:Object = new Object();
customClient.onMetaData = function(metadata:Object):void
{
_duration = metadata.duration; //获取视频持续时间
t_hs_control.maximum = _duration; //设置播放进度条最大值
}
_inStream.client = customClient;
//删除原_localVideo,便于在录制和播放视频之间切换
_localVideo.clear();
t_flv_video.removeChild(_localVideo);
_localVideo = new Video();
_localVideo.width = 320;
_localVideo.height = 240;
_localVideo.attachNetStream(_inStream);
_inStream.play(”testVideo”);
t_flv_video.addChild(_localVideo);
}
//播放按钮点击后事件:播放视频,同时分析是否播放来调整BUTTON上的标签,显示为播放或者暂停;
//并监听播放器
private function flvplay(event:Event):void{
t_hs_control.enabled=true;
t_btn_stop.enabled = true;
t_btn_rec.enabled = false;
if(!isplaying)
{
isplaying = true;
beginOrShowRecVideo();
}
else
{
_inStream.togglePause(); //自动在停止和播放之间切换
}
if(isplaying)
{
if(ispauseing){
t_btn_play.label=”播放”
}else {
t_btn_play.label=”暂停”
}
ispauseing = !ispauseing;
}
addEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//停止按钮和视频播放完毕
//重设一些值变量、按钮enabled值等
private function resetSomeParam():void
{
_inStream.close();
t_btn_play.label = “播放”;
t_lbl_playtime.text = “0:00 / “+ formatTimes(_duration);
t_hs_control.value = 0;
isplaying = false;
ispauseing = false;
t_hs_control.enabled=false;
t_btn_rec.enabled = true;
t_btn_stop.enabled = false;
}
//停止播放按钮点击事件:停止视频,同时调整相关BUTTON上的标签
private function flvStop(event:Event):void
{
resetSomeParam();
removeEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//拉动进度条
private function thumbPress(event:SliderEvent):void{
_inStream.togglePause();
removeEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//进度条改变后,得到的值赋予PLAYPOSITION;
private function thumbChanges(event:SliderEvent):void{
playPosition = t_hs_control.value;
}
//放开进度条,再把PLAYPOSITION的值发给播放器;
private function thumbRelease(event:SliderEvent):void{
_inStream.seek(playPosition);
_inStream.togglePause();
addEventListener(Event.ENTER_FRAME,__onEnterFrame);
}
//声音音量控制
private function sound_thumbChanges(event:SliderEvent):void{
soundPosition = hs_sound.value;
}
private function sound_thumbRelease(event:SliderEvent):void{
t_flv_video.volume = soundPosition;
}
//格式化时间
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;
}
//录制按钮点击后事件:录制视频,同时分析是否播放来调整BUTTON上的标签,显示为开始录制或者停止录制;
//并监听播放器
private function recVideo(event:MouseEvent):void
{
if(!isrecing) //开始录制
{
isrecing = true;
t_btn_rec.label = “停止录制”;
t_btn_play.enabled = false;
t_btn_save.enabled = false;
t_lbl_rec.visible = true;
beginOrShowRecVideo();
}
else //停止录制
{
isrecing = false;
t_btn_rec.label = “开始录制”;
t_btn_play.enabled = true;
t_btn_save.enabled = true;
t_lbl_rec.visible = false;
_outStream.close();
}
}
//检测摄像头权限事件
private function __onStatusHandler(event:StatusEvent):void
{
if(!_camera.muted)
{
t_btn_rec.enabled = true;
}
else
{
trace(”错误:无法链接到活动摄像头!”)
}
_camera.removeEventListener(StatusEvent.STATUS,__onStatusHandler);
}
//网络链接事件
//如果网络连接成功,开始录制或观看视频
private function __onNetStatusHandler(event:NetStatusEvent):void
{
switch (event.info.code)
{
case “NetConnection.Connect.Success”:
if(isrecing)
{
beginRecConnectStream();
}
else
{
showRecConnectStream();
}
break;
case “NetConnection.Connect.Failed”:
trace(”连接失败!”);
break;
case “NetStream.Play.StreamNotFound”:
trace(”Stream not found: ” + event);
break;
}
}
private function __onSecurityErrorHandler(event:SecurityErrorEvent):void
{
trace(”securityErrorHandler:” + event);
}
private function __onStreamErrorHandler(event:AsyncErrorEvent):void
{
trace(event.error.message);
}
//播放视频实时事件
//实时更改播放进度条值和播放时间值,当视频播放完成时删除实时侦听事件并重新设置一些初始值
private function __onEnterFrame(event:Event):void
{
if(_duration > 0 && _inStream.time > 0)
{
t_hs_control.value =_inStream.time;
t_lbl_playtime.text = formatTimes(_inStream.time) + ” / “+ formatTimes(_duration);
}
if(_inStream.time == _duration)
{
removeEventListener(Event.ENTER_FRAME,__onEnterFrame);
resetSomeParam();
}
}
]]>
</mx:Script>
<!–通过HTTPSERVICE来分析XML,然后得出RESULT,结果的反馈在SCRIPT里 –>
<!–此为读取XML扩展内容
<mx:HTTPService id=”videoserver” url=”assets/videos.xml” result=”readXml(event)”/>
–>
<!–主要的视频播放窗口 设置ID为FLVVIDEO,这个很重要,其他坐标可以随自己喜欢 –>
<mx:Panel x=”12″ y=”10″ width=”342″ height=”282″ layout=”absolute”>
<mx:VideoDisplay id=”t_flv_video” x=”1″ y=”1″ width=”320″ height=”240″/>
<mx:Label x=”243.5″ y=”6″ text=”正在录制中…” id=”t_lbl_rec” color=”#666666″ fontSize=”12″/>
</mx:Panel>
<!–播放器的播放进度条,用FLEX自带的HSLIDER来表现播放进度,同时可以拖动影片 –>
<mx:HSlider id=”t_hs_control” x=”12″ y=”296″ minimum=”0″
thumbPress=”thumbPress(event)”
thumbRelease=”thumbRelease(event)”
change=”thumbChanges(event)” />
<!–播放器声音控制 –>
<mx:HSlider id=”hs_sound” x=”260″ y=”295″ width=”80″
minimum=”0″ maximum=”1″
thumbRelease=”sound_thumbRelease(event)”
change=”sound_thumbChanges(event)”
value=”{t_flv_video.volume}” />
<!– 播放按钮,根据是否在播放,按钮显示为:播放 或者 暂停 –>
<mx:Button id=”t_btn_play” x=”22″ y=”320″ click=”flvplay(event)” label=”播放” fontSize=”12″/>
<!– 播放按钮,停止播放影片 –>
<mx:Button id=”t_btn_stop” label=”停止” x=”85″ y=”320″
click=”flvStop(event)” fontSize=”12″ enabled=”true”/>
<!– 时间显示 –>
<mx:Label x=”170″ y=”300″ id=”t_lbl_playtime”
text=”0:00 / 0:00″
color=”#ffffff”/>
<!–录制按钮,根据是否在录制,按钮显示为:开始录制 或者 停止录制–>
<mx:Button x=”210″ y=”320″ label=”开始录制” click=”recVideo(event)” fontSize=”12″ id=”t_btn_rec”/>
<!–保存视频按钮–>
<mx:Button x=”299″ y=”320″ label=”保存” fontSize=”12″ id=”t_btn_save” enabled=”true”/>
</mx:Application>
发表评论
-
控制连接数量和密码保护-flashcom教程 密码保护
2008-10-30 14:03 1242学习flashcom+学习英语(烂到死),无任何目的,本篇仅 ... -
AMF3 + AS 3.0 + ASP.NET 完整配置过程及源文件
2008-09-11 16:04 3584AMF3 + AS 3.0 + ASP.NET 完整配置过程及 ... -
FLEX结合FMS制作在线视频认证
2008-09-09 14:24 3838很多交友网站都具体在线视频认证能,如51.com。参考它的认 ... -
flex 3 + .net开发flash Remoting四[完整代码
2008-08-28 16:11 2216一. 相关说明: 本篇将呈现完整的Flash Remot ... -
FMS Client AS 自訂類別物件傳遞
2008-08-27 15:04 1061透過與 FMS 連線,可以共享 SharedObject 物件 ... -
FMS 常常会用到 3个Call 和3个Send
2008-08-27 14:51 2199FMS 常常会用到 3个Call 和3个Send 关于Flas ... -
flex as3 fms相关的资料(转)
2008-08-27 14:36 1706FMS.rar FMS系列教程http://www.fs2 ... -
视频类
2008-08-27 09:21 1862Flash Player作为流媒体的表现形式之一,视频编码是其 ... -
一步一步学Flash Media Server
2008-08-26 18:03 4361从今天起,我们来学习一下 Flash Media Server ... -
再说说onSync,SharedObject
2008-08-26 16:44 1607* 最多人不懂的就是:那个list参数看代码: my_rso ... -
视频监控软件(2)---异步录像
2008-08-26 16:10 1388不好意思,让大家久等了!今天我要实现的一个功能是异步录像!先讲 ... -
视频监控软件(1)---FMS视频流共享
2008-08-26 16:07 2722呵呵!临近毕业了,本人选择的毕业设计题目是(基于B/S模式的 ... -
flash fms WebService 交互过程
2008-08-26 16:01 1736//flash客户端call服务器端的方法,服务器端调用WS的 ... -
游戏开发常用FMS类
2008-08-26 15:51 1459游戏开发常用FMS类 ... -
FLEX提高篇--------ShareObject对象详解
2008-08-26 14:23 1129ShareObject,顾名思义共享对象,而通常意义上的共享, ... -
客户端呼叫Flash Medis Server3服务端入门
2008-08-26 14:02 1476当你不仅仅只想用FLEX来做纯业务数据的管理时,或者当你的项目 ... -
FMS两种方式实现简易聊天室
2008-08-26 14:01 1691原理和代码都很简单,没什么好说的. 一:利用ShareOb ... -
FLEX提高篇---------FMS简易聊天室加强版
2008-08-26 13:37 1838今天写了下简易聊天室的加强版 , 其实功能也十分有很 , 不过 ... -
Flex连接FMS实现用户列表(使用SharedObject)
2008-08-26 13:33 39921.先在FMS的安装目录中添加自己的应用(例如我的目录D:\M ... -
FMS 教程(SharedObject)用户列表
2008-08-26 13:32 2940FMS实现用户列表,一般都是利用List组件,和SharedO ...
相关推荐
通过使用Flex,开发者可以轻松地集成视频录制功能,并将录制的视频实时推送到服务器或其他平台进行直播或存储。 #### 代码解析 1. **初始化摄像头和网络连接**:在`init()`方法中调用`setupCamera()`初始化摄像头...
通过FLEX,我们可以方便地实现视频录制功能,并将录制的视频上传到FMS服务器。FMS服务器作为后台,负责接收、存储和分发视频流。整个过程涉及了客户端的摄像头访问、视频录制、网络传输,以及服务器端的安装和配置等...
本项目涉及的核心知识点是“Flash视频录制播放代码”,这是使用Adobe Flex框架实现的一个功能,涵盖了Flash、Flex、视频录制以及FLV视频播放等多个领域。 1. **Flash**:Flash是一种创建交互式动画、多媒体内容和富...
首先下载fms服务器安装好,并在fms安装目录的applications目录下新建一个test_video文件夹目录,一定要与flext程序中rtmp://127.0.0.1/test_video的test_video要一致,fms服务器启动后,执行flex程序,即可实现
Flex视频会议系统是一种基于Adobe Flex技术构建的在线交互式沟通平台,主要利用FMS(Flash Media Server)服务器作为后台支持,提供高效、稳定的音视频通信服务。Flex是ActionScript 3.0的一个开发框架,它使得...
### Flex视频语音文字聊天程序详解 #### 知识点一:FlexBuilder与视频语音文字聊天程序 FlexBuilder是Adobe公司推出的一款专为Flex框架设计的集成开发环境(IDE),它支持ActionScript和MXML,是开发富互联网应用...
在Flex应用中,我们可以使用Flash Player的NetStream类来处理视频流,它提供了播放、录制和广播视频的能力。而在服务器端,FluorineFx可以接收这些视频流,并根据需要进行转发或者存储。 此外,为了实现多用户视频...
Flex Red5 Tomcat 视频语音录制和播放 在网上找,总发现文章都一样,而且都是不完整的, 这里希望能够给跟我一样学习中的朋友一些帮助, 详细说明在压缩文件中有。 Flex+Red5+Tomcat视频播放器: ...
- **视频录制与回放**: FluorineFx还支持视频流的传输,允许用户进行视频录制和回放等功能。 #### 五、开发环境 本系列文章推荐的开发环境如下: - **.NET**: Microsoft Visual Studio 2008 + .NET Framework 3.5...
在"flex-red5.zip_flex_red5_red5_flex 视频服务器"这个压缩包中,我们可以推断出这可能包含了一套Flex和Red5集成的示例或库,帮助开发者快速搭建流媒体应用。其中的文件可能包括Flex项目的源代码、配置文件、Red5的...
在Flex编程环境中,开发人员经常需要处理多媒体内容,如视频播放。`Video`组件是Adobe Flex SDK中的核心组件之一,它允许我们轻松地在Flash Player或Adobe AIR应用程序中嵌入和控制视频播放。本篇文章将深入探讨如何...
- **解释**:本章重点在于如何使用FMS3进行实时通信应用开发,包括连接到FMS服务器、创建交互式连接、流媒体播放、在线视频录制与回放、实时视频聊天以及多人在线聊天应用。 通过以上概述,《细细品味Flex——新...
【标题】:“Fms 视频录制屏幕共享技术解析及实战” 在IT行业中,视频录制和屏幕共享功能已经成为许多应用程序和服务的重要组成部分,特别是在远程协作、在线教育和游戏直播等领域。FMS(Flash Media Server)是...
1. **Flex客户端**:在客户端部分,`aRecorder` 和 `vrecorder` 可能是两个独立的Flex应用程序,分别负责音频和视频的捕获与录制。它们可能包含以下关键组件: - **摄像头访问**:Flex提供Camera类,可以访问用户的...
压缩包内的“java和Flex视频通话源码”很可能包括以下部分: 1. **Java服务器端源码**:这部分代码可能实现了Red5服务器端的接口,处理视频流的接收、处理和发送,以及与Flex客户端的通信协议。 2. **Flex客户端源码...
RED5能够处理音频、视频流,并支持录制、播放和点播功能,广泛应用于在线视频直播、教育、企业内部通讯等领域。它的一大优势在于可以与其他开源技术如Flex结合,实现高效、灵活的多媒体应用。 在Flex中与RED5进行...
Flex播放器是一种基于Adobe Flex技术构建的多媒体播放软件,它允许开发者创建丰富的、交互式的网络应用程序,特别是用于视频和音频的播放。Flex是基于ActionScript 3.0和Flash Player运行时,提供了一套强大的开发...
FMS是Flex背后的关键技术,它作为服务器端的平台,支持实时传输协议(RTMP)、Real-Time Messaging Protocol (RTMFP) 和HLS等协议,用于实时音频和视频流的发布、播放和录制。在本实例中,FMS将作为视频流的处理中心...