每天一点学FMS(二)文字+视频语音

本文介绍如何在FMS服务器上进行视频和语音的发布,通过简单的代码实现摄像头和麦克风的数据流传输,并演示了如何检测摄像头和麦克风的状态。
[b] 每天一点学FMS(二)文字+视频语音[/b]

FMS服务器的设置简单的仿照(一)就可以了,这段代码延续(一),加上了视频和语音发布,主要用到netstream.publish()方 法,该方法也可以用于视频在线录制,除了检测摄相头和MIC状态的代码外,就增加了十几行的视频发布代码,有关摄相头和MIC的详细设置我并没有写,只是 让大家看清楚它的工作原理,没有摄相头的朋友(我就没有摄相头)可以这样测试:打开麦克风说话,如果能听到回音就说明发布成功了
复制内容到剪贴板
代码:
//建立与服务器的连接.
var sv_uri:String = "rtmp:/recordstream";
var my_nc:NetConnection = new NetConnection ();
my_nc.connect (sv_uri);
//新建共享对象;
my_nc.onStatus = function (thisObj:Object){
if (thisObj.code == "NetConnection.Connect.Success"){
info_txt.text = "连接服务器成功!!";
info_txt.textColor = 0x66CC00;
}
else{
info_txt.text = "连接服务器失败!!"
info_txt.textColor = 0xFF0000;
}
}
var user_rso:SharedObject = SharedObject.getRemote ("chat_rso", my_nc.uri, true);
user_rso.connect (my_nc);
//建立摄相头和麦克风对象
this.cam = Camera.get();
this.mic = Microphone.get();
videobox.attachVideo(this.cam);
videobox.attachAudio(this.mic);
send_ns = new NetStream(my_nc);
send_ns.attachVideo(this.cam);
send_ns.attachAudio(this.mic);
send_ns.publish("humorguy");
get_ns = new NetStream(my_nc);
get_ns.play("humorguy");
videobox2.attachVideo(get_ns);
//更新聊天内容
user_rso.onSync = function (){
chatOutput_txt.text += newline+this.data.chatname +":" + this.data.chatcontent;
chatOutput_txt.scroll = chatOutput_txt.maxscroll+1;//确保最新消息能显示在输出框里
}
//回车键发送聊天内容
function myOnKeyDown() {
if (Key.getCode() == 13) {
if(chatInput_txt.text != undefined && chatInput_txt.text != user_rso.data.chatcontent){
Selection.setFocus(chatInput_txt);
user_rso.data.chatcontent = chatInput_txt.text;
if(name_txt.text != "" && name_txt.text != user_rso.data.chatname){
user_rso.data.chatname = name_txt.text;
}
}
}
}
var myListener:Object = new Object();
myListener.onKeyDown = myOnKeyDown;
Key.addListener(myListener);
//构造检测摄相头和麦克风状态的函数
function checkforCam_Mic() {
camArray = Camera.names;
micArray = Microphone.names;
if (camArray.length>=1) {
temp_cam = Camera.get();
if (temp_cam == -1) {
camInfo_txt.text = '视频设备正忙!';
camInfo_txt.textColor = 0xFFCC00;
} else {
camInfo_txt.text = '视频设备可用!';
camInfo_txt.textColor = 0x66CC00;
}
delete temp_cam;
} else if (camArray.length == 0) {
camInfo_txt.text = '没有视频设备!';
camInfo_txt.textColor = 0xFF0000;
}
//检测麦克风状态
if (micArray.length>=1) {
temp_mic = Microphone.get();
if (temp_mic == -1) {
camInfo_txt2.text = '麦克风正忙!';
camInfo_tx2t.textColor = 0xFFCC00;
} else {
camInfo_txt2.text = '麦克风可用!';
camInfo_txt2.textColor = 0x66CC00;
}
delete mic_cam;
} else if (micArray.length == 0) {
camInfo_txt2.text = '没有麦克风!';
camInfo_txt2.textColor = 0xFF0000;
}
}
checkforCam_Mic();
本课题设计了一种利用Matlab平台开发的植物叶片健康状态识别方案,重点融合了色彩与纹理双重特征以实现对叶片病害的自动化判别。该系统构建了直观的图形操作界面,便于用户提交叶片影像并快速获得分析结论。Matlab作为具备高效数值计算与数据处理能力的工具,在图像分析与模式分类领域应用广泛,本项目正是借助其功能解决农业病害监测的实际问题。 在色彩特征分析方面,叶片影像的颜色分布常与其生理状态密切相关。通常,健康的叶片呈现绿色,而出现黄化、褐变等异常色彩往往指示病害或虫害的发生。Matlab提供了一系列图像处理函数,例如可通过色彩空间转换与直方图统计来量化颜色属性。通过计算各颜色通道的统计参数(如均值、标准差及主成分等),能够提取具有判别力的色彩特征,从而为不同病害类别的区分提供依据。 纹理特征则用于描述叶片表面的微观结构与形态变化,如病斑、皱缩或裂纹等。Matlab中的灰度共生矩阵计算函数可用于提取对比度、均匀性、相关性等纹理指标。此外,局部值模式与Gabor滤波等方法也能从多尺度刻画纹理细节,进一步增强病害识别的鲁棒性。 系统的人机交互界面基于Matlab的图形用户界面开发环境实现。用户可通过该界面上传待检图像,系统将自动执行图像预处理、特征抽取与分类判断。采用的分类模型包括支持向量机、决策树等机器习方法,通过对已标注样本的训练,模型能够依据新图像的特征向量预测其所属的病害类别。 此类课题设计有助于深化对Matlab编程、图像处理技术与模式识别原理的理解。通过完整实现从特征提取到分类决策的流程,生能够将理论知识与实际应用相结合,提升解决复杂工程问题的能力。总体而言,该叶片病害检测系统涵盖了图像分析、特征融合、分类算法及界面开发等多个技术环节,为习与掌握基于Matlab的智能检测技术提供了综合性实践案例。 资源来源于网络分享,仅用于习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值