FMS在线录视频【转帖】

准备工具:”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
1、Flash Media Server;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
2、Flash 8 && Flash 8 Player;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
3、一个摄像头,一个麦克;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
此教程及附带源文件仅做网友个人交流学习使用.请勿用于商业用途.需要商业版请单独联系.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
1、打开FLASH,新建一个FLASH文档.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
2、CTRL + L调出库..在库的右上角有个三角,点一下.然后选择"新建视频元件";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
命名为:video”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
3、在主场景里新建2个图层,一个名字叫 video_record,另一个叫video_play;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
4、将库里的视频元件分别拖到这2个图层中.起名字叫video_r和video_p.video_r是用来录视频的.video_p是用来放视频的.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
5、下面起新建MC啊,或命名一类的我就不写了.只做程序介绍.如果连MC命名都不知道的话相信也看不懂这教程.大家见谅 ”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
程序部分:”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var server_uri:String = "rtmp://localhost/tensharp";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//FMS地址;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var videoName:String = "KeeRula";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//视频名.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var my_nc:NetConnection = new NetConnection ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//新建一个连接对象,用来连接FMS;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_nc.connect (server_uri);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//连接FMS;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var my_ns:NetStream = new NetStream (my_nc);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//新建流,用来捕获和播放视频;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var my_cam:Camera = Camera.get ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
video_r.attachVideo (my_cam);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//获得慑像头,并将摄像头获取的视频载入到video_r里.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_cam.setQuality (1024, 90);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//设置带宽和质量;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var my_mic:Microphone = Microphone.get ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//获得MIC;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.attachVideo (my_cam);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.attachAudio (my_mic);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//将摄像头图象和MIC声音装载到流.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
video_p._visible = false;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//将播放窗口设置为不可见.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_nc.onStatus = function (thisObjbject)”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//trace (thisObj.code);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
if (thisObj.code == "NetConnection.Connect.Success")”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
RecordStop ("空闲中");”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//执行录制停止方法.并将状态设置为空闲”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
else”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
trace ("错误:服务器未启动或URI输入错误.");”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//onStatus这里是指服务器的连接状态.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
function Record ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
video_r._visible = true;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//将录制窗口设为可见.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
video_p._visible = false;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//播放窗口设置为不可见.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.publish (videoName, "record");”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//关键就在这句了.写了这么多全围绕它来的.record为录制.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
StreamInfo ("NowRecord");”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//执行StreamInfo方法,并将参数设置为NowRecord;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_pr.btn_text.text = "停止";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//按钮文字:停止.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
RecordInterval = setInterval (RecordTime, 1000);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//统计录制时间.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//方法:录制.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var timeNum:Number = 0;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//录制时间.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
function RecordTime ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
timeNum ++;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
txt_status.text = "正在录制" + " " + "时间:" + Math.floor (timeNum / 60) + "分" + (timeNum % 60) + "秒";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//方法:录制时间统计.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
function RecordStop (__status:String)”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//__status是当前状态文字.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
txt_status.text = "当前状态:" + __status;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_pr.btn_text.text = "录制";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
StreamInfo ("NowStop");”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//执行StreamInfo方法..并将参数设置为NowStop;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
clearInterval (RecordInterval);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
timeNum = 0;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//不录了..要把统计时间清空.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
if (__status == "录制完成")”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
Finished ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//这个应该不用偶说了..”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//方法:空闲或录制完成.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
function Finished ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.close();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//完成了..就要关闭录制.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var thisObj = this;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
var FinishAlert:MovieClip = _root.attachMovie ("Alert", "FinishAlert", 100);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//这个是一个弹出框.具体看库里的MC:Alert.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
with (FinishAlert)”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
alertTitle.html = true;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
alertTitle.htmlText = "<b>" + "录制完成!" + "</b>";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
info.text = "录制完成..请选择下一步操作."”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
_x = video_r._x + (video_r._width - _width) / 2;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
_y = video_r._y + (video_r._height - _height) / 2;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_sub.btn_txt.text = "播放";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_cln.btn_txt.text = "重录";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_sub.onRelease = function ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
thisObj.PlayVideo ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
thisObj.closeAlert (FinishAlert);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_cln.onRelease = function ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
thisObj.Record ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
thisObj.closeAlert (FinishAlert);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
closed.onRelease = function ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
thisObj.closeAlert (FinishAlert);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_pr.enabled = false;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//把按钮设为不可点.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//方法:录制完成.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
function closeAlert (__alert:MovieClip)”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_pr.enabled = true;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
unloadMovie (__alert);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//关闭那个Alert用的.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
function StreamInfo (__status:String)”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_pr.onRelease = function ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
if (__status == "NowRecord")”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
RecordStop ("录制完成");”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
else if (__status == "NowStop")”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
Record ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
else if (__status == "NowPlay")”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
Record ();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//嘿嘿..如果把上面的仔细看了的话这个就不用我说了吧.^_^”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
function PlayVideo ()”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
txt_status.text = "当前状态:" + "正在播放...";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
StreamInfo ("NowPlay")”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
video_r._visible = false;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
video_p._visible = true;”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
video_p.attachVideo (my_ns);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//将视频载到播放窗口中.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.play (videoName);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//开始播放.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
btn_pr.btn_text.text = "重录";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.onStatus = function (PlayInfo)”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
if (PlayInfo.code == "NetStream.Play.Stop")”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
{”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.seek (0);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
my_ns.pause();”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
txt_status.text = "当前状态:" + "播放完成...";”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//流状态信息...详细的请自己 trace (PlayInfo.code);”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
}”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//方法:播放视频.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//需要注意的是用FMS播放的时候不用写路径.因为FMS录的视频直接存在FMS默认的流文件目录里了.”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|
//录的视频的存放路径:FMS安装目录:/application/站点/streams/_definst_”$"QåúÖ ’www.flash-bbs.comÁí}D[Šƒ¡[|