由AIR 2.6 開始, 可以在iOS 與Android 之間使用Camera, 我們配合P2P 技術, 可以簡單地模仿Apple 的Facetime 功能, 並且能跨平台使用.
範例製作條件:
- 兩個能執行Adobe AIR 的電話
- 一個Flash Media Server 4, 我們可以用Adobe 公開伺服器 (rtmfp://stratus.adobe.com/) 作試驗
範例功能:
- 開啟程式後, 打開相機, 自動分享相機視訊, 雙方能夠在電話互相看見對方.
範例使用類別說明:
- NetConnection - 會在用戶端與伺服器之間建立雙向連線
- NetGroup - 實體代表 RTMFP 群組的成員資格
- NetStream - 會在 NetConnection 上開啟單向串流通道
- Camera - 從用戶端系統的攝影機擷取視訊
Step 1: 建立連線 (NetConnection 物件)
_nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
_nc.connect(SERVER+DEVKEY+"/");
Step 2: 建立P2P 群組 (NetGroup 物件)
var gs:GroupSpecifier = new GroupSpecifier("marcoGroup/g041");
gs.postingEnabled = true;
gs.routingEnabled = true;
gs.serverChannelEnabled = true;
var ng:NetGroup = new NetGroup(_nc, gs.groupspecWithAuthorizations());
ng.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
Step 3: 建立串流 (NetStream 物件)
var ns:NetStream = new NetStream(nc ,NetStream.DIRECT_CONNECTIONS);
ns.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
ns.publish("media");
Step 4 : 開啟相機 (Camera 物件)
var camera:Camera = Camera.getCamera();
if (camera){
var ui:UIComponent = new UIComponent();
var width:int = 320;
var video:Video = new Video(width, width);
camera.setMode(320, 240, 24.);
camera.setQuality(1638400, 85);
video.attachCamera(camera);
ui.name = _nc.nearID;
ui.height = width;
ui.addChild(video);
vGroup.addElement(ui);
}
Step 5: 當相機開啟後, 將相機與串流聯繫
_ns.attachCamera(_camera);
Step 6: 完成設定後 (或有新用戶完成設定), 把串流身分號碼發送給其他用戶
var message:Object = new Object();
message.nearID = nearID;
ng.sendToAllNeighbors(message);
Step 7: 最後, 假如有新用戶發送串流身分號碼, 便以該串流建立視訊影像
var ui:UIComponent = vGroup.getChildByName(nearID) as UIComponent;
var ns:NetStream = new NetStream(nc, nearID);
ns.play("media");
ns.client = this;
var width:int = 320;
var video:Video = new Video(width, width);
ui = new UIComponent();
ui.name = nearID;
ui.addChild(video);
video.attachNetStream(ns);
vGroup.addElement(ui);
只要理解製作流程, 可以簡單在流動電話上, 完成視訊串流.
大家可以 [
下載], 然後一齊玩玩視像通訊.
注意事項:
- 使用Android 電話作測試平台, 請確定android.permission.INTERNET 和android.permission.CAMERA 權限是開啟
參考資料:
http://www.adobe.com/devnet/flashmediaserver/articles/p2p_apps_cirrus_lccs.html