-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Description
The example code just straight up has a blatant syntax error.
`const webcam = require('webcam-http-streaming');
const encoder = {
/*
- encoder command or location
- Default: avconv
/
command: 'ffmpeg',
/ - Function that returns the required flags, the video is expected to be
- written to stdout
- Default: shown below
/
flags(webcam) {
return-f video4linux2 -i ${webcam} -f webm -deadline realtime pipe:1;
},
/ - MIME type of the output stream
- Default: 'video/webm'
/
mimeType: 'video/webm',
/ - Function that detects the success of the encoder process,
- does cb(true) in case of succes, any other value for failure
- Calling cb more than one time has no effect
- encoderProcess is of type ChildProcess
- Default: shown below, it isn't perfect but covers most of the cases
/
isSuccessful(encoderProcess, cb) {
let started = false;
encoderProcess.stderr.setEncoding('utf8');
encoderProcess.stderr.on('data', (data) => {
/ I trust that the output is line-buffered /
const startedText = /Press ctrl-c to stop encoding/;
if(startedText.test(data)) {
cb(true);
started = true;
}
});
/ If the process start was not detected and it exited it's surely a failure */
encoderProcess.on('exit', () => {
if(!started) cb(false);
});
}
};
/* Suppose i want to use the default REST API /
const server = webcam.createHTTPStreamingServer({
/
- Optional: A list of the permitted webcams, if it's specified overrides
- isValidWebcam
/
permittedWebcams: ['/dev/video0', '/dev/video1'],
/ - Validates if a given path is a valid webcam for use, the default is shown
- below
*/
isValidWebcam(webcam) {
const webcamRegex = //dev/video[0-9]+/;
return new Promise((accept, reject) => {
/* If doesn't seem like a video device block we will fail */
if(!webcamRegex.test(webcam)) {
reject(false);
} else {
/* ... and if the file doesn't exists */
fileExists(webcam).then(accept, reject);
}
});
}
/*
- The endpoint for requesting streams of the REST api
- Defaults to '/webcam'
/
webcamEndpoint: '/webcam',
/ - Custom endpoints to extend the REST API
- req: IncomingMessage
- res: ServerResponse
- reqUrl: URL Object
-
with [QueryString](https://nodejs.org/api/querystring.html#querystring_querystring_parse_str_sep_eq_options) - Note: the endpoint 'default' is used for any non-matching request
*/
additionalEndpoints: {
'/list_webcams': (req, res, reqUrl) => { res.end('...'); }
},
encoder: encoder
}).listen(8080);
/* Returns a promise that resolves to the video stream (stream.Readable) */
const videoStream = webcam.streamWebcam('/dev/video0', encoder);`
Metadata
Metadata
Assignees
Labels
No labels