ChromeCast Device Emulator的使用

最近在做自定義Chromecast Receiver的項目,但是在開發過程中,暫時沒有真實的設備和APP ID,所以只好找一個模擬器對開發的Receiver進行測試。

模擬器Chromecast Device Emulator:https://github.com/ajhsu/chromecast-device-emulator

一、模擬器工作原理

首先我們來看一下真實Google Cast的使用流程。如下圖所示,左側是在真實場景中Sender、Cast device、Receiver的之間的通信圖。我們可以看到Sender app中,用戶可能執行加載視頻(load)、播放(play)、暫停(pause)等操作。當執行這些動作時,Sender app會通過Sender SDK把這些信息通過發送IPCMessages的方式發送到Cast device中。而Cast device只是轉發了這些IPCMessages給Receiver App。Receiver接受到信息後則做出響應。

在無真實設備開發的場景中,我們所需要的模擬器實現的功能就是轉發IPCMessages。但是因爲沒有真實的設備,所以我們需要預先把用戶可能執行的操作的信息記錄下來,讓模擬器轉發,確保Receiver能收到IPCMessages即可。

二、安裝方法

2.1 全局安裝/CLI:

npm install chromecast-device-emulator -g

安裝後,將iIPCMessages內容寫入一個json文件中,啓動CLI即可向Receiver發送IPCMessages。啓動方法以下兩種任選其一:

chromecast-device-emulator start scenario.json
cde start scenario.json

2.2 局部安裝/Node

在項目中的開發環境中安裝chromcast-device-emulator的node api,如下:

npm install chromecast-device-emulator --save-dev

然後在項目中引入cde的包並創建一個模擬器:

var CastDeviceEmulator = require('chromecast-device-emulator');

// 創建一個instance
var emulator = new CastDeviceEmulator();

// 加載預記錄IPCMessages的json文件
emulator.loadScenario(require(your_json_path));

// 啓動模擬器
emulator.start();

// do something

// 關閉模擬器
emulator.stop();

三、scenario.json

像github中提供的文檔,是建議使用IPC Message Recorder去記錄來自真實設備的信息內容。但是暫時還未申請SDK的情況下,而且我在項目中只是需要獲取一個URL,所以我就參考example中的例子,僅寫了一個特簡單的LOAD類型IPCMessage,大家也可以依據自己的項目情況編寫scenario.json文件。以下是我寫的:

{
    "timeline": [{
      "time": 844,
      "ipcMessage": "{\"data\":\"{\\\"applicationId\\\":\\\"4F8B483\\\",\\\"applicationName\\\":\\\"testing app\\\",\\\"closedCaption\\\":{},\\\"deviceCapabilities\\\":{\\\"bluetooth_supported\\\":true,\\\"display_supported\\\":true,\\\"focus_state_supported\\\":true,\\\"hi_res_audio_supported\\\":false},\\\"launchingSenderId\\\":\\\"7f8b100d-a1fe-e60b-5a35-6feaa22976df.2:sender-l4koe754cbxf\\\",\\\"messagesVersion\\\":\\\"1.0\\\",\\\"sessionId\\\":\\\"46fd154e-f03d-4d58-986d-4998c43639a7\\\",\\\"type\\\":\\\"ready\\\",\\\"version\\\":\\\"1.30.113131\\\"}\",\"namespace\":\"urn:x-cast:com.google.cast.system\",\"senderId\":\"SystemSender\"}"
    },
    {
      "time": 1064,
      "ipcMessage": "{\"data\":\"{\\\"type\\\":\\\"LOAD\\\",\\\"requestId\\\":889570262,\\\"sessionId\\\":\\\"46fd154e-f03d-4d58-986d-4998c43639a7\\\",\\\"media\\\":{\\\"contentId\\\":\\\"http://localhost/source/test.mp4\\\"},\\\"autoplay\\\":true}\",\"namespace\":\"urn:x-cast:com.google.cast.media\",\"senderId\":\"7f8b100d-a1fe-e60b-5a35-6feaa22976df.2:152792770056491611\"}"
    }]
  }

其中contentId就是需要傳送的URL,type是操作類型,autopaly:true指定加載視頻完成後自動播放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章