Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b81b120260 | ||
|
|
92e0b39897 | ||
|
|
c80b6b0a67 | ||
|
|
9f6f0ca8fa |
+4
-1
@@ -57,7 +57,7 @@ yargs(hideBin(process.argv))
|
|||||||
(yargs) => {
|
(yargs) => {
|
||||||
return yargs
|
return yargs
|
||||||
.option("log_level", { describe: "Set log level", default: "info" })
|
.option("log_level", { describe: "Set log level", default: "info" })
|
||||||
.option("discovery_ip", { describe: "Camera discovery IP address", default: "192.168.1.255" })
|
.option("discovery_ip", { describe: "Camera discovery IP address" })
|
||||||
.option("ssid", { describe: "Wifi network for the camera to connect to" })
|
.option("ssid", { describe: "Wifi network for the camera to connect to" })
|
||||||
.option("password", { describe: "Wifi network password" })
|
.option("password", { describe: "Wifi network password" })
|
||||||
.demandOption(["ssid", "password"])
|
.demandOption(["ssid", "password"])
|
||||||
@@ -68,6 +68,9 @@ yargs(hideBin(process.argv))
|
|||||||
if (majorVersion < 16) {
|
if (majorVersion < 16) {
|
||||||
logger.error(`Node version ${majorVersion} is not supported, may malfunction`);
|
logger.error(`Node version ${majorVersion} is not supported, may malfunction`);
|
||||||
}
|
}
|
||||||
|
if (argv.discovery_ip !== undefined) {
|
||||||
|
config.discovery_ips = [argv.discovery_ip];
|
||||||
|
}
|
||||||
pair({ ssid: argv.ssid, password: argv.password });
|
pair({ ssid: argv.ssid, password: argv.password });
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|||||||
+1
-1
@@ -269,7 +269,7 @@ const deal_with_data = (session: Session, dv: DataView) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (session.curImage.length == 1) return; // header does not have markers
|
if (session.curImage.length <= 1) return; // header does not have markers
|
||||||
|
|
||||||
let lastFrameSlice = session.curImage[session.curImage.length - 1];
|
let lastFrameSlice = session.curImage[session.curImage.length - 1];
|
||||||
const lastResetMarker = findAllResetMarkers(lastFrameSlice).pop();
|
const lastResetMarker = findAllResetMarkers(lastFrameSlice).pop();
|
||||||
|
|||||||
+1
-2
@@ -155,8 +155,6 @@ export const serveHttp = (port: number) => {
|
|||||||
sessions[dev.devId] = s;
|
sessions[dev.devId] = s;
|
||||||
config.cameras[dev.devId] = { rotate: 0, mirror: false, audio: true, ...(config.cameras[dev.devId] || {}) };
|
config.cameras[dev.devId] = { rotate: 0, mirror: false, audio: true, ...(config.cameras[dev.devId] || {}) };
|
||||||
|
|
||||||
const header = Buffer.from(`--${BOUNDARY}\r\nContent-Type: image/jpeg\r\n\r\n`);
|
|
||||||
|
|
||||||
s.eventEmitter.on("frame", () => {
|
s.eventEmitter.on("frame", () => {
|
||||||
// Add an EXIF header to indicate if the image should be rotated or mirrored
|
// Add an EXIF header to indicate if the image should be rotated or mirrored
|
||||||
let orientation = config.cameras[dev.devId].rotate;
|
let orientation = config.cameras[dev.devId].rotate;
|
||||||
@@ -164,6 +162,7 @@ export const serveHttp = (port: number) => {
|
|||||||
const exifSegment = orientations[orientation];
|
const exifSegment = orientations[orientation];
|
||||||
const jpegHeader = addExifToJpeg(s.curImage[0], exifSegment);
|
const jpegHeader = addExifToJpeg(s.curImage[0], exifSegment);
|
||||||
const assembled = Buffer.concat([jpegHeader, ...s.curImage.slice(1)]);
|
const assembled = Buffer.concat([jpegHeader, ...s.curImage.slice(1)]);
|
||||||
|
const header = Buffer.from(`\r\n--${BOUNDARY}\r\nContent-Length: ${assembled.length}\r\nContent-Type: image/jpeg\r\n\r\n`);
|
||||||
responses[dev.devId].forEach((res) => {
|
responses[dev.devId].forEach((res) => {
|
||||||
res.write(header);
|
res.write(header);
|
||||||
res.write(assembled);
|
res.write(assembled);
|
||||||
|
|||||||
Generated
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "cam",
|
"name": "cam-reverse",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
|||||||
Reference in New Issue
Block a user