JavaScript

Open Channel and Connect WebSocket

var CHANNEL_SETTINGS = {
    camera: {
        width: 640,
        height: 480,
        quality: 70,
        fps: 15,
        send_image: "true",
        compress: "false",
        vlc_params: ['-I', 'dummy', '--ignore-config', '--network-caching=1000', '--directx-volume=0s']
    },
    face: {
        detection: {
            enable: "true",
            tracking: "true",
            max_size: 8192,
            min_size: 40,
            age: "true",
            gender: "true",
            express: "true"
        },
        identification: {
            enable: "false",
            group_id: "GROUPID",
            mode: 2,
            max_result: 3
        }
    },
    human: {
        detection: {
            enable: "false",
            tracking: "true",
            max_size: 8192,
            min_size: 40
        }
    }
};
var URL_CHANNEL_OPEN = 'http://localhost:8800/channel/open';
var STREAM_SOURCE = 'localcamera/0';
var WEBSOCKET_SERVER = 'ws://localhost:4662';

/**
 * [apiChannelOpen description]
 * @param  {[String]}   videoURL [stream source url]
 * @param  {[Object]}   settings [description]
 * @param  {Function}   cb       [description]
 * @return {[type]}              [description]
 */
var apiChannelOpen = function(videoURL, settings, cb) {
    var data = new FormData();
    data.append('url', videoURL);
    data.append('settings', JSON.stringify(settings));

    var xmlhttp = new XMLHttpRequest();
    xmlhttp.addEventListener("load", function() {
        var responseData = this.responseText;
        var json = JSON.parse(responseData);
        cb(null, json);
    }, false);
    xmlhttp.open("POST", URL_CHANNEL_OPEN, false);
    xmlhttp.send(data);
};

/**
 * [websocketConnect description]
 * @param  {[String]} channel_id [description]
 * @return {[type]}              [description]
 */
var websocketConnect = function(channel_id) {
    var webSocket = new WebSocket(WEBSOCKET_SERVER);
    var reader = new FileReader();

    webSocket.binaryType = "arraybuffer";
    webSocket.addEventListener("open", function(evt) {
        // send channel id to server
        var sendData = { channel_id: channel_id };
        webSocket.send(JSON.stringify(sendData));
    });

    webSocket.addEventListener("message", function(evt) {
        var bytes = new Uint8Array(evt.data);
        var blob = new Blob([bytes.buffer]);
        reader.onload = function(e) {
            // detect result with json format
            var json_parse = JSON.parse(e.target.result);
            console.log(json_parse);
        }
        reader.readAsBinaryString(blob);
    });

    webSocket.addEventListener("close", function(evt) { console.log(evt) });
    webSocket.addEventListener("error", function(evt) { console.log(evt) });
}

apiChannelOpen(STREAM_SOURCE, CHANNEL_SETTINGS, function(err, res) {
    if (err) {
        console.log(err);
    } else {
        var channel_id = res.channel_id;
        websocketConnect(channel_id);
    }
});

results matching ""

    No results matching ""