`
wangangie28
  • 浏览: 47390 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

JAVA+fms

 
阅读更多

  最近完成的 Java Flex Fms 视频聊天程序,虽然说同类的东西还是有的,但是这是我自己写的。 和大家交流一下,由于要配置fms3 服务器端,和mySql 数据库所以,源代码配置起来很麻烦,要代码的话和我联系。 说一下和java 有关的部分,因为视频走的是fms,所以和java代码部分没有任何关系。 java的功能部分主要有这么几个: 1.建立socket Tcp/Ip连接到服务器端。 2.实现在线列表,好友列表,黑名单等功能。 3.发送消息,控制有关申请,拒接等控制操作。 4.连接mySql数据库,对登录信息进行管理。 功能的解释在 http://ltoooooooo.javaeye.com/blog/424008 下面发一下截图: (登录&注册) (单聊申请) (单聊对话框) (视频申请) (视频聊天窗口)
  继续上一篇,写一下有关的代码。
  声明一下:本人才疏学浅,有什么不妥的地方,多加指正,先谢谢了
  Java方面和一般的socket聊天室一样,就是建立一个数据库,连接的方法不再细说.
  在线列表实现方法:
  建立个线程池,vector,在每个线程中增加一个变量,用来存储账号信息,就是当用户连接的时候,服务器端遍历这个vector把用户列表发给客户端。
  单聊,广播实现方法:
  由于加入了用户账号的信息,只要找到这个线程,用输出流,输出即可。广播就是给线程池里的所有人发就行。
  socket:
  在java端建立 ServerSocket,等待flash 连接。客户端向服务器端发数据,包括控制信息,分别用不同的开头表示,如在java 端收到 Java代码 type="application/x-shockwave-flash" width="14" height="15" src="http://tonyliu8731.javaeye.com/javascripts/sy ntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=try%7B%0A%20%20%20%20%20%20%2 0%20%20%20%20%20%20%20%20%20%20%20while(true)%7B%0A %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%20%20%20%20%20%20line%3Dinse.readUTF() %3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%20%20%20if(line.startsWith(%22000%22)) %7B%2F%2F000%20%E5%BC%80%E5%A4%B4%E7%9A%84%E4%B8%BA %E6%99%AE%E9%80%9A%E4%BF%A1%E6%81%AF%EF%BC%8C%E4%B8 %8D%E5%90%8C%E5%8D%A1%E5%A4%B4%E5%A4%84%E7%90%86%E4 %B8%8D%E5%90%8C%0A%20%20%20%20%20%20%20%20%20%20%20 %20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20 %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20 %20%20%20myserver.sendmeseage(line)%3B%0A%20%20%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20% 20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20% 20%20%7D%0A%7Dcatch(e)%7B%0A%20%20%20%20%E5%BC%82%E 5%B8%B8%E6%97%B6%E6%89%A7%E8%A1%8C%0A%7Dfinally%7B% 0A%20%20%20%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E9%80%80% E5%87%BA%E6%97%B6%E6%89%A7%E8%A1%8C%0A%7D">
  java Tcp/Ip的构架就不说。网上一般都有介绍,下面说一下fms的配置,使用。我这个一个相当简单的例子。(再次强调:视频是flex连接fms 与java 端无关)
  1,下载fms 3 安装,一路下一步,当要输入序列号的时候,空着不填,就是开发者版本,有个连接数的限制,但功能上不会有限制。记住用户名,密码
  2,按安装路径打开这个 就两个用的上的东西
  
  applications 为远程要连接的文件,放在下面,就是是说所有的东西都爱要放在这里,相当于PHP的WWW
  fms_adminConsole.swf 为控制的软件。
  3.安装后要启动服务,一般已启动,有必要的话,可以打开它,在tool 文件夹中。
  
  4.连接这个服务器。
  我们在applications 下建立这么个文件夹 test_video1。用RTMP 协议,不是HTTP 哦! As3代码 type="application/x-shockwave-flash" width="14" height="15" src="http://tonyliu8731.javaeye.com/javascripts/sy ntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=appServer%3D%22rtmp%3A%2F%2F1 27.0.0.1%2Ftest_video1%22%3B%0A%20netConnection%20% 3D%20new%20NetConnection()%3B%0A%20netConnection.ad dEventListener(NetStatusEvent.NET_STATUS%2CnetStatu sHandler)%3B%0A%20netConnection.connect(appServer)% 3B%0A%20netConnection.client%3Dthis%3B%2F%2F%E6%A0% 87%E7%A4%BA%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%8C%E5% 88%AB%E5%BF%98%E4%BA%86%E5%93%A6%EF%BC%81">
  NetStatusEvent.NET_STATUS监听连接事件,结果要执行netStatusHandler 函数。
  NetConnection.Connect.Success 是连接成功。否则失败,下面是事件的处理函数 As3代码 type="application/x-shockwave-flash" width="14" height="15" src="http://tonyliu8731.javaeye.com/javascripts/sy ntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=private%20function%20netStatu sHandler(evt%3ANetStatusEvent)%3Avoid%0A%7B%20%20%2 0%0A%20if%20(%20evt.info.code%3D%3D%22NetConnection .Connect.Success%22%20)%0A%20%7B%0A%20%20startCommu nicate()%3B%2F%2F%E6%88%90%E5%8A%9F%EF%BC%8C%E7%BB% A7%E7%BB%AD%E6%89%A7%E8%A1%8C%0A%20%7D%0A%20else%0A %20%7B%0A%20%20Alert.show(%22fms%E8%BF%9E%E6%8E%A5% E5%A4%B1%E8%B4%A5%22%2Bevt.info.code)%3B%0A%20%7D%0 A%7D">
  5.连接成功后
  在FMS服务端有代码: 把这个代码拷贝到记事本中,另存为test_video1.asc(flash as 通信文件),放在test_video1文件中,注意:这两个文件名要一样 As代码 type="application/x-shockwave-flash" width="14" height="15" src="http://tonyliu8731.javaeye.com/javascripts/sy ntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%3Cspan%20style%3D%22white-sp ace%3A%20normal%3B%22%3E%26nbsp%3B%3Cspan%20style%3 D%22white-space%3A%20pre%3B%22%3EuserList%3D%5B%5D% 3B%3C%2Fspan%3E%3C%2Fspan%3E%0A%0Aapplication.onApp Start%3Dfunction()%0A%7B%0A%20trace(%22fms%E6%9C%8D %E5%8A%A1%E5%99%A8%E5%90%AF%E5%8A%A8......%22)%3B%0 A%7D%0A%0Aapplication.onConnect%20%3D%20function(cu rrentClient)%0A%7B%20%20%20%20%20%20%20%20%20%20%20 %0A%20%20currentClient.communicateServer%3D%20funct ion(value)%0A%20%20%7B%0A%20%20%20currentClient.use rname%3Dvalue%3B%0A%20%20%20for(j%3D0%3Bj%3CuserLis t.length%3Bj%2B%2B)%0A%20%7B%0A%20%20if%20(%20userL ist%5Bj%5D%3D%3DcurrentClient.username)%0A%20%20%7B %0A%20%20%20userList.splice(j%2C1)%3B%0A%20%20%7D%0 A%20%7D%0A%20%20%20userList.push(value)%3B%0A%20%20 %20trace(%22%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5 %88%97%E8%A1%A8%22%2BuserList)%3B%20%0A%20%20%20app lication.broadcastMsg(%22playVideo%22%2CuserList)%3 B%0A%20%20%7D%0A%20%7D%0A%7D%0A%0Aapplication.onDis connect%3Dfunction(currentClient)%0A%7B%0A%20trace( %22%E7%94%A8%E6%88%B7%22%2BcurrentClient.username%2 B%22%E7%A6%BB%E5%BC%80%E8%81%8A%E5%A4%A9%E5%AE%A4%2 2)%3B%0A%20%0A%20for(j%3D0%3Bj%3CuserList.length%3B j%2B%2B)%0A%20%7B%0A%20%20if%20(%20userList%5Bj%5D% 3D%3DcurrentClient.username)%0A%20%20%7B%0A%20%20%2 0userList.splice(j%2C1)%3B%0A%20%20%7D%0A%20%7D%0A% 20trace(%22%E5%BD%93%E5%89%8D%E7%94%A8%E6%88%B7%E5% 88%97%E8%A1%A8%22%2BuserList)%3B%0A%20application.b roadcastMsg(%22playOtherVideo%22%2CuserList)%3B%0A% 20application.broadcastMsg(%22hisOut%22%2CcurrentCl ient.username)%3B%2F%2F%E6%9C%AC%E4%BE%8B%E5%AD%90% E4%B8%8D%E6%B6%89%E5%8F%8A%0A%7D">
  几个需要解释的:
  1.定义一个数组用于存放客户端名称。
  2.application.onConnect在连接是执行。里面定义的方法,要在客户端调用。
  3.application.broadcastMsg("playVideo",userList);为广播,调用所有客户端的playVideo函数,后面为参数。
  4.application.onDisconnect=function(currentClient),为断开连接时执行,像Java中的finally。
  客户端: 解释一下:responder 为一个回调函数,,意思是在执行netConnection.call这句时,先在远程服务器端执行communicateServer 这个函数,执行后在执行客户端responder 的函数,
  username是要传递的参数。
  自此连接的阶段完成了,并且把客户端记录在数组中。方便以后查找,因为我们要完成的是单聊。
  6.进入下个阶段,视频:
  如何获取本地视频?
  用摄像头就行啊!  camera = Camera.getCamera();  As3代码 type="application/x-shockwave-flash" width="14" height="15" src="http://tonyliu8731.javaeye.com/javascripts/sy ntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=if%20(!camera)%0A%7B%0A%20%20 %20%20%20Alert.show(%20%22%E7%B3%BB%E7%BB%9F%E6%B2% A1%E6%9C%89%E6%A3%80%E6%B5%8B%E5%88%B0%E6%91%84%E5% 83%8F%E5%A4%B4%2C%E5%BB%BA%E8%AE%AE%E6%82%A8%E5%AE% 89%E8%A3%85%E6%91%84%E5%83%8F%E5%A4%B4%22)%3B%0A%7D %0A%20camera.setMode(160%2C100%2C24)%3B%2F%2F%E8%AE %BE%E7%BD%AE%E6%A8%A1%E5%BC%8F%EF%BC%8C%EF%BC%88%E9 %95%BF%EF%BC%8C%E5%AE%BD%EF%BC%8C%E5%B8%A7%E7%8E%87 %EF%BC%89%0A%20camera.setQuality(0%2C100)%3B%2F%2F% E8%AE%BE%E7%BD%AE%E8%B4%A8%E9%87%8F%EF%BC%880%E4%B8 %BA%E4%B8%8D%E9%99%90%E5%88%B6%E5%B8%A6%E5%AE%BD%20 %EF%BC%8C100%20%E8%B4%A8%E9%87%8F%E4%B8%BA100%25%20 %EF%BC%89%0A%20onlyVideo.vd1.attachCamera(camera)%3 B%20%2F%2FonlyVideo.vd1%20%E4%B8%BA%20videoDisplay% 0A%20microphone%3DMicrophone.getMicrophone()%3B">
  如何把视频传到服务器上?
  outNetStream = new NetStream(netConnection); As3代码 type="application/x-shockwave-flash" width="14" height="15" src="http://tonyliu8731.javaeye.com/javascripts/sy ntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%20outNetStream.attachCamera( camera)%3B%0A%20outNetStream.attachAudio(microphone )%3B%0A%20outNetStream.publish(username%2C%22live%2 2)%3B%2F%2F%E5%8F%91%E5%B8%83%E8%A7%86%E9%A2%91">
  live 方式是现场流。
  如何播放服务器上的现场流?
  因为服务器端由很多人的视频,所以要找到和你聊天的人。
  public function playVideo(UserList:Array):void//传来客户端的列表 As3代码 type="application/x-shockwave-flash" width="14" height="15" src="http://tonyliu8731.javaeye.com/javascripts/sy ntaxhighlighter/clipboard_new.swf" pluginspage="http://www.macromedia.com/go/getflash player" allowscriptaccess="always" quality="high" flashvars="clipboard=%7B%0A%20%0A%20for(var%20i%3A int%3D0%3Bi%3CUserList.length%3Bi%2B%2B)%0A%20%7B%0 A%20%20if%20(%20UserList%5Bi%5D%3D%3DonlyVideo.toWh o)%2F%2F%E6%89%BE%E5%88%B0%E8%A6%81%E6%92%AD%E6%94% BE%E8%B0%81%E7%9A%84%E8%A7%86%E9%A2%91%20onlyVideo. toWho%20%E6%98%AF%E8%81%8A%E5%A4%A9%E7%AA%97%E5%8F% A3%E7%9A%84%E5%AF%B9%E6%96%B9%0A%20%20%7B%0A%20%20% 20var%20video%3AVideo%20%3D%20new%20Video()%3B%0A%2 0%20%20video.width%3D160%3B%0A%20%20%20video.height %3D100%3B%0A%20%20%20var%20inNetStream%3ANetStream% 3D%20new%20NetStream(netConnection)%3B%0A%20%20%20v ideo.attachNetStream(inNetStream)%3B%0A%20%20%20inN etStream.play(newUserList%5Bi%5D)%3B%0A%20%20%20onl yVideo.vd2.addChild(video)%3B%20%20%20%2F%2FonlyVid eo.vd2%20%E4%B8%BA%20videoDisplay%0A%20%20%7D%0A%20 %7D%0A%7D">
分享到:
评论

相关推荐

    flash网游基础通讯(FMS,JAVA)

    在本话题中,我们将深入探讨Flash网游基础通讯,重点关注Flash与FMS(Flash Media Server)以及Flash与Java之间的交互。这些技术在构建实时互动游戏和多媒体应用时起着至关重要的作用。 首先,让我们来看看Flash与...

    FMS 中文 开发 帮助 文档 3合1

    《FMS 中文 开发 帮助 文档 3合1》是一个综合性的资源,旨在为FMS(Flash Media Server)的初学者和开发者提供详细的指导和帮助。该压缩包包含了三个重要的文档,分别是“FMS帮助文档中文版.PDF”、“Adobe[1].Flash...

    FMS连接问题解决方案--完结版

    如果发现即使关闭FMS服务,这些端口依然被占用,可能是由于Java虚拟机(JVM)的进程,如Flash Builder自带的Eclipse JRE环境,导致的。在这种情况下,可以通过控制面板的“程序和功能”卸载不必要的JRE版本,尤其是...

    老成FMS框架 v5.3

    老成FMS是一个相对重量级的集成快速开发框架,前端后台数据库乃至业务都有一定的耦合度,后台使用大家再熟悉不过的JAVA SSM,前端有bootstrap,layui,还有我自己封装的一些js库等。当然快速框架常用的功能都会有的...

    FMS做成的客户端动画同步(网游基础)

    这部分代码通常使用不同于Flash的服务器端编程语言编写,如Java、C#或Node.js,与FMS进行接口交互,以实现游戏的服务器端功能。 综上所述,这个压缩包的内容涵盖了从客户端动画的实现到服务器端的同步逻辑,是理解...

    FMS(客户账户管理)

    在FMS系统中,Core Java作为基础,意味着系统的架构和核心逻辑都是基于Java标准版(Java SE)实现的。Core Java涵盖了Java的基础语法、集合框架、多线程、网络编程以及IO流等关键模块,这些都为FMS提供了坚实的技术...

    fms.rar_sql里面的fms

    【fms.rar_sql里面的fms】是一个涉及到文件管理和SQL数据库系统的项目。这个项目的主要目标是提供一个有效的文件管理系统,能够支持文件的增删改操作,从而帮助用户更好地组织和管理他们的数据。它不仅包含了数据库...

    fms3.5开发向导

    文档还罗列了一系列Adobe及其他公司的品牌和商标信息,包括但不限于Adobe AIR、Adobe Premiere、ActionScript、Acrobat Connect、Creative Suite、Dreamweaver、Flash、Flex、XMP等,以及Java、Microsoft、Windows、...

    Flex FMS 发送和接收视频

    虽然“Flex+JMS实例说明”没有明确提及视频,但JMS(Java消息服务)是一种消息中间件,可以用于在分布式环境中传递消息。在视频应用中,JMS可能会被用来辅助处理视频元数据、状态更新或同步信息,以提高系统效率和...

    QHFMS核心代码

    这个系统显然采用了Java编程语言,这是由标签"java"所指示的。Java是一种广泛应用的、面向对象的编程语言,以其跨平台能力和强大的库支持而著名,常用于开发企业级应用,尤其是服务器端应用。 在描述中,"QHFMS核心...

    fms 中文文档 10

    通过服务器端的ActionScript,开发者能够与Java 2 Enterprise Edition (J2EE) 服务器、Web服务以及Microsoft .NET服务器建立连接,从而利用这些服务进行数据库认证、实时更新等功能。 **共享对象**是FMS中的核心...

    基于Java实现的文件管理系统 + 数据库文件 + 前端页面

    1. 运行命令: nohup java -jar fms-1.0.jar & 2. 访问:http://ip:8081 3. 你也可以直接使用IDEA导入源码运行 ## 使用指南 配置文件中以下两个参数标识管理员账号和密码: > admin.uname=root admin.pwd=123

    基于WEB的小型柔性系统FMS的远程控制.zip

    "基于WEB的小型柔性系统FMS的远程控制"这一标题指出,讨论的主题是关于一种采用WEB技术实现的小型灵活制造系统(Flexible Manufacturing System,简称FMS)的远程控制方案。FMS是一种自动化制造系统,它能够根据生产...

    video_android_demo.zip_android_android fms java_android 学习_视频

    android 视频的源码,很详细并有注释 可用于学习

    Fms3和Flex打造在线多人视频会议和视频聊天(附原代码)

    本教程将聚焦于使用Adobe Flash Media Server 3 (FMS3) 和 Adobe Flex 来实现这样的系统。下面我们将深入探讨这两个工具以及构建此类应用的关键知识点。 **Adobe Flash Media Server 3 (FMS3)** FMS3是Adobe公司...

    PyPI 官网下载 | aws-cdk.aws-fms-1.106.0.tar.gz

    AWS CDK 是一个开源软件开发框架,允许开发者使用熟悉的编程语言(如Python、JavaScript、TypeScript或Java)来定义云基础设施。CDK使开发者能够使用高级抽象来构建、部署和管理AWS资源,而不是直接操作低级云...

    frs.zip_fms re_red5_smartfox_smartfox机箱

    **Red5**是一款开源的流媒体服务器,由Java编写,可运行于多种操作系统上,如Windows、Linux和Mac OS。Red5同样支持RTMP协议,但除此之外,它还提供了录制、播放、存储等功能,可以用于构建视频会议、在线教育和游戏...

    fms-cim

    【fms-cim】是一个基于Java技术的项目,它的全称可能是“Financial Management System - Common Information Model”,推测可能是一个用于财务管理的系统,其中CIM代表了通用信息模型。在IT行业中,CIM(Common ...

    老成FMS框架源代码

    老成FMS是一个相对重量级的集成快速开发框架,前端后台数据库乃至业务都有一定的耦合度,后台使用大家再熟悉不过的JAVA SSM,前端有bootstrap,layui,还有我自己封装的一些js库等。当然快速框架常用的功能都会有的...

Global site tag (gtag.js) - Google Analytics