Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
TrevorBlythe opened this issue May 29, 2023 · 0 comments
Open

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

TrevorBlythe opened this issue May 29, 2023 · 0 comments

Comments

@TrevorBlythe
Copy link

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

@TrevorBlythe TrevorBlythe changed the title Doesnt even work. Doesnt even work. (the code on the npm website dont work) May 29, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant