通过FMS实现视频时时聊天其实很简单,也就是操作时时流。如果是单向视频聊天,则两端一边一边为发布端一边为订阅端,如果是双向视频聊天,则两边都分别是发布端和订阅端。
如果从技术实现上来分析,单向视频聊天就是一边发布流另一边播放流,双向视频聊天则是两边都需要提供两个流,一个负责发布流,一个负责播放流。在说专业点就是一个创建流并且发送到服务器的客户端叫发布,一个创建流来接受内容的客户端叫订阅,当同一个客户端同是发布和订阅时,它必须创建两个流,一个是输出流,一个是接受流。
说了这么多下面看看具体是怎么实现的,要实现视频聊天上面分析过,就是一边发布时时视频流一边播放,这同样离不开连接FMS。
以下是视频聊天的视频流发布端的开发代码:
package
{
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.media.*;
import fl.controls.*;
public class PublishStream extends Sprite
{
private var video:Video;
private var nc:NetConnection;
private var ns:NetStream;
private var cam:Camera;
private var mic:Microphone;
public function PublishStream():void
{
btnPublish.label="发布视频";
btnPublish.addEventListener(MouseEvent.CLICK,onPublishClick);
//获取视频和声音,并将视频显示到Flash界面
cam = Camera.getCamera();
mic = Microphone.getMicrophone();
video = new Video(320,240);
video.attachCamera(cam);
video.x=20;
video.y=20;
addChild(video);
}
private function onPublishClick(evt:MouseEvent):void
{
nc = new NetConnection();
nc.connect("rtmp://localhost/LiveStreams");
nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
}
private function onNetStatusHandler(evt:NetStatusEvent):void
{
trace(evt.info.code);
if(evt.info.code=="NetConnection.Connect.Success")
{
ns=new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
ns.client=new CustomClient();
ns.attachCamera(cam);
ns.attachAudio(mic);
ns.publish(txtInput.text,"live");
}
}
}
}
视频接收端相对发布端更简单,提供一个NetConnetion连接到发布端的FMS,通过NetStream播放时时视频流就完成
package
{
import flash.net.*;
import flash.events.*;
import flash.display.*;
import flash.media.*;
public class LiveStream extends Sprite
{
private var video:Video;
private var nc:NetConnection;
private var ns:NetStream;
public function LiveStream():void
{
nc = new NetConnection();
nc.connect("rtmp://localhost/LiveStreams");
nc.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
}
private function onNetStatusHandler(evt:NetStatusEvent):void
{
if(evt.info.code=="NetConnection.Connect.Success")
{
ns=new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS,onNetStatusHandler);
ns.client=new CustomClient();
video=new Video();
video.attachNetStream(ns);
ns.play("1111");//1111为流的名字,对应于视频流发布端的publish("1111","live").
addChild(video);
}
}
}
}
OK,到这里视频聊天的两端都完成了,如果需要做双向视频聊天,只需要在每一边多提供一个流就可以了,两端都实现发布视频流和接收视频流数据。
或许看完文章的朋友回问到CustomClient是那里来的,CustomClient是为了处理元数据的,可以通过元数据向实况视频添加一些格外的属性,本文暂时不讨论,有兴趣的朋友可以查看官方文档了解。
分享到:
相关推荐
它支持低延迟的实时流传输,是实现视频聊天的基础。 2. **视频编码与解码**:FMS3支持H.263等视频编码格式,确保视频数据在网络上传输时能有效压缩,同时在客户端解码时能恢复高质量的视频画面。 3. **音频编码与...
【标题】中的“通过FMS实现时时视频聊天(Flash|Flex)源码”是指使用Adobe的Flash Media Server (FMS)技术,结合Flash和Flex这两种编程语言,开发出一款能够实现实时视频通信的应用程序。这个标题暗示了我们将在...
【标题】:“利用FMS实现视频聊天程序” 在IT领域,构建实时的视频聊天应用程序是一项常见的挑战,尤其是在当今社交媒体和远程工作环境中。FMS(Flash Media Server)是Adobe公司推出的一款强大的流媒体服务器,它...
根据提供的标题、描述、标签及部分内容,我们可以提炼出与FMS(Flash Media Server)相关的多个...通过这些知识点的学习,可以更好地理解和掌握 FMS 在实时视频传输中的应用,进而开发出高效稳定的实时视频聊天系统。
在这个“fms之P2P视频聊天”项目中,我们将探讨如何利用FMS和P2P技术来实现高清视频聊天功能,并可能将其扩展到更多的应用场景。 首先,P2P视频聊天的核心在于如何建立两端之间的连接。由于NAT(网络地址转换)的...
4. **实时通信**:为了实现视频聊天,FMS支持多人视频会议功能,允许多个用户同时进行视频通话。通过服务器的多路复用和流分发,可以将一个用户发送的视频流分发给其他用户,实现群聊。 5. **安全性与优化**:FMS...
Flex+FMS写的视频聊天,在本机亲测通过。但唯一不足得是在别的机子上连接不成功。我也不知道为什么。望有才之士能完善。huzhaohui1992@qq.com 如能完善,请给我邮箱一份,在下感激不尽。
在IT行业中,构建在线网页视频聊天系统是一项技术挑战,它涉及到多个...总的来说,"fms在线网页视频聊天"项目是一个涉及多媒体处理、网络通信、服务器管理等多个领域的综合应用,体现了IT技术在实时互动领域的应用。
【基于FMS的视频聊天源码】是一种使用Adobe Flash Media ...通过分析和学习这个源码,开发者不仅可以掌握实时视频聊天应用的开发,还能深入了解Flex和FMS的结合使用,以及如何集成第三方服务,提升自己的技能和经验。
- **聊天室功能**:FMS聊天室是基于FMS构建的实时通信平台,用户可以通过文字、语音或视频进行互动交流。 - **实时性**:利用FMS的实时传输特性,确保消息即时发送和接收,实现低延迟的聊天体验。 - **多用户支持...
通过研究并实践这个“FMS3.0实现视频会议”的项目,你可以掌握Flex和FMS3.0的核心特性,理解实时多媒体通信的原理,这对于进一步深入学习WebRTC、互动直播、在线教育等领域都大有裨益。同时,这个项目也可以作为开发...
【描述】:在“FMS制作聊天室例子”中,开发者可能通过ActionScript 3(AS3)编程语言与FMS进行交互,创建一个能够实时传递消息、实现用户间即时沟通的平台。由于描述中的...
【标题】"简易聊天室flash多人聊天 FMS实现"揭示了这个项目的核心是构建一个基于Flash的多人在线聊天系统,采用FMS(Flash Media Server)作为后台技术来实现实时的通信功能。Flash是一种广泛应用于网页上的多媒体...
《FMS视频会议源代码详解》 ...总的来说,FMS视频会议源代码是研究实时多媒体通信和远程协作系统的重要参考,通过深入学习,我们可以了解Web音视频传输的底层机制,为开发更高效、更可靠的视频会议应用打下坚实基础。
总的来说,ASP+FMS语音聊天室是一个结合了前后端技术的实时通讯应用,它利用ASP处理后端逻辑,通过FMS提供高效的音视频流服务,从而实现流畅的在线聊天体验。在深入研究和使用这套系统时,开发者需要熟悉ASP编程、...
网络视频会议系统是一种高效、实时的远程通信工具,它使得身处不同地点的用户能够通过网络进行面对面的交流。在本文中,我们将深入探讨一个基于FMS(Flash Media Server)技术构建的网络视频会议系统的设计与实现。 ...
【标题】"基于FMS的一对一视频聊天程序"是一个使用Adobe Flash Media Server (FMS)作为核心技术,实现用户间实时视频通信的应用。FMS是Adobe公司提供的一款专业级的流媒体服务器,它能够处理实时音频、视频流,支持...
这个系统的核心是FMS,它是由Adobe开发的一款服务器软件,专门用于实时流媒体处理,支持音频、视频的直播和点播,以及交互式应用程序的运行。在多人视频会议场景中,FMS发挥着至关重要的作用,能够处理大量的并发...
6. **音视频通信**:如果支持,可能利用FMS的音视频流功能实现语音聊天或视频通话。 7. **安全性**:保护用户隐私,防止恶意攻击,例如通过加密传输内容或设置权限。 8. **扩展性**:设计为可扩展,以便添加更多功能...
总的来说,通过Flex和FMS3的结合,我们可以构建出功能完善的在线多人视频会议和视频聊天系统。这个过程中,不仅需要扎实的编程基础,还需要对音视频处理、网络通信和服务器管理有深入的理解。提供的"Video2"文件可能...