Skip to content

Doesnt even work. (the code on the npm website dont work) #3

Description

@TrevorBlythe

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);`

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions