使用带有RTMP的Flash Media Server(FMS)进行实时视频聊天

时间:2011-03-01 21:27:05

标签: flash video-streaming rtmp flash-media-server videochat

我正在努力获得一个与Flash Media Server一起使用的实时视频聊天的基本示例,但无论我怎么努力,它都不适合我。

我正在使用此网页上的教程和代码:http://www.derekentringer.com/blog/fms-video-chat/

我有两台服务器:一台Web服务器和一台媒体服务器。在媒体服务器上,我安装了FMS,并确保端口1935已打开,以便在Web和媒体服务器之间进行通信。

我认为我的问题是如何设置我的FMS实例。在本教程中,他使用Influxis.com托管的FMS解决方案。我正在使用自己安装了FMS的媒体服务器。有谁知道如何设置我的FMS实例,以便我可以使这个工作?

在Web服务器上,我有两个不同的文件夹(user1和user2),每个文件夹都有一个html文件和一个swf文件连接到网络摄像头,然后通过rtmp将网络摄像头的流连接到媒体服务器。

这是我在SWF文件上的代码。

//setup the camera and mic for streaming
mycam = Camera.get();
mycam_audio = Microphone.get();

//control the cameras mode and quality
mycam.setMode(320,240,30);
mycam.setQuality(10000,100);

//attach a live preview of the camera to the 
//video object that is setup on the stage
cam_feed.attachVideo(mycam);
cam_feed.attachAudio(mycam_audio);

//connect to the Flash Media Server
client_nc = new NetConnection();
client_nc.connect("rtmp://corpwebdevmedia1/test"); // I've tried server name and IP
cam_ns = new NetStream(client_nc);

//attach our camera video and audio to the net stream
cam_ns.attachVideo(mycam);
cam_ns.attachAudio(mycam_audio);

//publish to our Flash Media Server as a 
//live stream called user_2
cam_ns.publish("user_2", "live");
// user_1 for the other one

//bring in user_1's video/audio
in_ns = new NetStream(client_nc);
in_ns.play("user_1");  
// user_2 for the other one

//attach user_1's published audio and video
//so we can see them in the larger chat window
live_feed.attachVideo(in_ns);
live_feed.attachAudio(in_ns);

完成所有操作后,我会转到本地计算机并将浏览器导航到Web服务器上的html文件。页面连接到每个页面上的相机,但它们从不连接在一起。

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我不确定这是否适用于所有相机,但至少在我开发类似的应用程序时,我遇到了同样的问题,问题的原因是两个应用程序无法共享同一个相机。

换句话说,您无法同时使用Skype和Flash播放器应用程序进行视频聊天。 两个Flash播放器应用程序也是如此 - 它们不能同时使用相同的相机输入。所以尝试连接另一台摄像机,或者测试两台电脑(这就是我所做的)。如果您使用单个系统进行测试,您将在音频设置方面遇到更多问题(虽然我无法准确记住错误,但在尝试模拟完整音色时,我确实遇到了许多尝试静音或更改音量的问题在一个系统上进行2人聊天)

另一个问题可能是您为两个应用程序使用相同的流名称,是否在其中一个应用程序中切换了“user_2”和“user_1”?