This project is early in development and API may change. The query, playout, data and template commands are mostly finished and I will be adding more as I need them. If you need something that is missing add an issue.
For now docs are in the source only.
npm install caspar-cg
var CasparCG = require("caspar-cg");
ccg = new CasparCG("localhost", 5250);
ccg.connect(function () {
ccg.info(function (err, serverInfo) {
console.log(serverInfo);
});
ccg.play("1-1", "AMB");
setTimeout(function () {
ccg.clear("1");
ccg.disconnect();
}, 10 * 1000);
});
ccg.on("connected", function () {
console.log("Connected");
});
This code example requires express. The templates are rendered by using CALL and stringifying your json payload. The template on your caspar server can cast that string back to json.
var express = require("express");
var app = express();
var router = express.Router();
var path = __dirname + '/app/'; // source code directory
var bodyParser = require("body-parser");
var CasparCG = require("caspar-cg");
ccg = new CasparCG("your-casparcg-ip-address", 5250);
router.post("/caspar/:template",function(req,res){ //
ccg.connect(function () {
var addCommand = 'CG 1-99 ADD 0 your-template-dir/'+req.params.template+' 1';
var updateCommand = 'CALL 1-99 UPDATE "'+JSON.stringify(req.body)+'"';
ccg.sendCommand(addCommand);
ccg.sendCommand(updateCommand, function(){
console.log('Command was sent')
})
});
res.send('Command was sent');
});
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(express.static('node_modules'))
app.use(express.static('app'))
app.use("/",router);
app.use("*",function(req,res){
res.sendFile(path + "404.html");
});
app.listen(3000,function(){
console.log("Live at Port 3000");
});
- Fix
disconnected
event on node v4+ - Requires node v4+
- Fix
info
parsing error when parsingimage-producer
data
- Adds
resume
- Adds
swap
- Adds
print
- Adds
logLevel
- Adds
mixerFill
to move and resize layers
ccg.info()
now parses layers and returns a much more predictable result.
- Layers is always an array
- Numbers and Booleans are parsed (all values were strings before)
- Parameters with
-
and_
are replaced with cammel case - Inconsistent parameters are renamed
Socket errors are now emitted as connectionError
instead of error
.