我正在开发一个 HTML5 应用程序,它需要与 Flash 交互以访问本地媒体(例如,网络摄像头和麦克风),并在远程浏览器之间传输音频视频。但在这个应用程序中,我需要将本地网络摄像头显示在屏幕的一部分上,并由远程网络摄像头显示中的各种 HTML 元素隔开。我很确定这意味着我需要运行多个 Flash 应用程序实例。但我认为您一次只能抓取一个网络摄像头实例,这意味着我需要能够在 Flash 实例之间共享这些网络摄像头和麦克风对象:一个显示本地网络摄像头,另一个与远程网络摄像头。有可能这样做吗?例如,
换句话说,我正在考虑有一个看起来像这样的 ActionScript 类(当然要简化很多):
public class MediaController
{
public function MediaController()
{
ExternalInterface.addCallback('getUserMedia', this.getUserMedia);
ExternalInterface.addCallback('getCamera', this.getCamera);
ExternalInterface.addCallback('setCamera', this.setCamera);
ExternalInterface.addCallback('getMicrophone', this.getMicrophone);
ExternalInterface.addCallback('setMicrophone', this.setMicrophone);
}
private var _mic:Microphone;
private var _cam:Camera;
public function getUserMedia()
{
_mic = Microphone.getMicrophone();
_cam = Camera.getCamera();
}
public function getCamera():Camera
{
return this._cam;
}
public function setCamera(cam:Camera):void
{
this._cam = cam;
}
public function getMicrophone():Microphone
{
return this._mic;
}
public function setMicrophone(mic:Microphone):void
{
this._mic = mic;
}
}
我会像这样在 JavaScript 中检索它们:
var localUser = $('#localUser')[0];
localUser.getUserMedia();
var mic = localUser.getMicrophone();
var cam = localUser.getCamera();
然后将它们传递回实际与远程用户进行通信的实例,如下所示:
var remoteUser = $('#remoteUser')[0];
remoteUser.setMicrophone(mic);
remoteUser.setCamera(cam);
这样做有什么已知的陷阱吗?有没有更好的方法来处理这个?(在你问之前,是的,在没有其他建议的情况下,我打算编写这个代码,我会让每个人都知道我发现了什么 - 只是想知道在我得到之前是否有任何已知的陷阱或替代方案开始了。:-)