2016年2月15日 星期一

[LinkIt Smart 7688] 結合MCS影像串流

很久沒更新BLOG了

有種快遺忘它的感覺wwww

廢話不多說 今天要介紹MCS最近更新的新資料通道:Video Stream

有些人有玩過Linkit Smart 7688會知道這塊裝置天生帶有影像串流功能


而這次聯發科工程師終於將這功能加入倒MCS上了!


在使用Video Stream功能前我們要先創建產品原型






產品原型名稱:7688_video

產品原型版本:1.0

硬體平台:Linkit Smart 7688(MT7688)

產業:教育

應用程式:其他



除了硬體平台之外其他都可更改





輸入完畢後按下詳情進入原型設計


在產品詳情頁面中,按下"新增"按鈕新增新的資料通道



由於我們要將7688的影像串流到MCS上面,所以要新增"影像串流"的資料通道

因此我們選擇新增"顯示器"



資料通道名稱:video

資料通道ID:video

資料型態:影像串流

(注意!資料通道ID須為英文)



建立完畢資料通道後,我們要新增測試裝置



測試裝置名稱自行命名


這樣MCS端就準備完成!


其中有幾個要特別留意DeviceID、DeviceKey、資料通道Id這三個是讓我們7688與MCS溝通的重要資訊
以我的為例子
DeviceID:Db4pn6WV
DeviceKey:mxiEyDmigaJgBy1O
資料通道id:video

確認完畢後接著到LinkIt Smart7688端

在撰寫程式前要先確認7688是否為station mode
若不是station mode則會無法將影像資料串流到MCS上

透過ssh遠端連進7688後
首先要先安裝FFmpeg
opkg update
opkg install ffmpeg
安裝完畢後,安裝7688的mcs環境
mkdir app && cd app npm init
npm install mcsjs
完成後將現在的位置移動到 /app/node_modules下
cd /app/node_modules
 新增Javascript程式:app.js
vim app.js
輸入i後,將下面的程式碼複製貼上至編輯器裡,記得要將deviceId、deviceKey及dataChnId裡的變數(藍色的部分)更改成你的

var mcs = require('mcsjs');
var exec = require('child_process').exec;
var deviceId = 'Input your deviceId';
var deviceKey = 'Input your deviceKey';
var dataChnId = 'Input your `video stream` data channel Id';
var width = 176;
var height = 144;
var myApp = mcs.register({
  deviceId: deviceId,
  deviceKey: deviceKey,
});
exec('ffmpeg -s ' + width + 'x' + height + ' -f video4linux2 -r 30 -i /dev/video0 -f mpeg1video -r 30 -b 800k http://stream-mcs.mediatek.com/' + deviceId + '/' +deviceKey + '/' + dataChnId + '/' + width + '/' + height, function(error, stdout, stderr) {
  console.log('stdout: ' + stdout);
  console.log('stderr: ' + stderr);
  if (error !== null) {
    console.log('exec error: ' + error);
  }
});

完畢後按下ESC 並輸入":wq"退出vi編輯器

退出後輸入
node app
就可以看到影像串流至MCS上囉!