4 Commits
Author SHA1 Message Date
David Ventura b81b120260 Rename project 2024-12-12 12:00:32 +01:00
David Ventura 92e0b39897 Respect --discovery_ip in pair subcommand 2024-12-12 12:00:25 +01:00
David Ventura c80b6b0a67 Add content-length & newline before boundary 2024-10-02 22:43:53 +02:00
Tin LaiandTin Lai 9f6f0ca8fa fix crashes when pkt_id 1 is dropped (#33)
Signed-off-by: Tin Lai <tin@tinyiu.com>
Co-authored-by: Tin Lai <tin@tinyiu.com>
2024-07-04 11:27:06 +02:00
4 changed files with 7 additions and 5 deletions
+4 -1
View File
@@ -57,7 +57,7 @@ yargs(hideBin(process.argv))
(yargs) => {
return yargs
.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("password", { describe: "Wifi network password" })
.demandOption(["ssid", "password"])
@@ -68,6 +68,9 @@ yargs(hideBin(process.argv))
if (majorVersion < 16) {
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 });
},
)
+1 -1
View File
@@ -269,7 +269,7 @@ const deal_with_data = (session: Session, dv: DataView) => {
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];
const lastResetMarker = findAllResetMarkers(lastFrameSlice).pop();
+1 -2
View File
@@ -155,8 +155,6 @@ export const serveHttp = (port: number) => {
sessions[dev.devId] = s;
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", () => {
// Add an EXIF header to indicate if the image should be rotated or mirrored
let orientation = config.cameras[dev.devId].rotate;
@@ -164,6 +162,7 @@ export const serveHttp = (port: number) => {
const exifSegment = orientations[orientation];
const jpegHeader = addExifToJpeg(s.curImage[0], exifSegment);
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) => {
res.write(header);
res.write(assembled);
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "cam",
"name": "cam-reverse",
"lockfileVersion": 3,
"requires": true,
"packages": {