homebridge-unifi-protect 6.7.0 → 6.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +1 -1
- package/config.schema.json +0 -24
- package/dist/protect-camera-package.d.ts +9 -0
- package/dist/protect-camera-package.js +120 -0
- package/dist/protect-camera-package.js.map +1 -0
- package/dist/protect-camera.d.ts +5 -12
- package/dist/protect-camera.js +48 -139
- package/dist/protect-camera.js.map +1 -1
- package/dist/protect-device.d.ts +10 -4
- package/dist/protect-device.js +82 -13
- package/dist/protect-device.js.map +1 -1
- package/dist/protect-doorbell.d.ts +4 -0
- package/dist/protect-doorbell.js +54 -0
- package/dist/protect-doorbell.js.map +1 -1
- package/dist/protect-ffmpeg-codecs.js +5 -4
- package/dist/protect-ffmpeg-codecs.js.map +1 -1
- package/dist/protect-ffmpeg-options.d.ts +2 -2
- package/dist/protect-ffmpeg-options.js +199 -149
- package/dist/protect-ffmpeg-options.js.map +1 -1
- package/dist/protect-ffmpeg-record.js +1 -1
- package/dist/protect-ffmpeg-record.js.map +1 -1
- package/dist/protect-ffmpeg.d.ts +3 -3
- package/dist/protect-ffmpeg.js.map +1 -1
- package/dist/protect-light.js +2 -0
- package/dist/protect-light.js.map +1 -1
- package/dist/protect-nvr-events.js +34 -31
- package/dist/protect-nvr-events.js.map +1 -1
- package/dist/protect-nvr-systeminfo.js +1 -1
- package/dist/protect-nvr-systeminfo.js.map +1 -1
- package/dist/protect-nvr.d.ts +2 -3
- package/dist/protect-nvr.js +22 -101
- package/dist/protect-nvr.js.map +1 -1
- package/dist/protect-options.d.ts +4 -3
- package/dist/protect-options.js +87 -87
- package/dist/protect-options.js.map +1 -1
- package/dist/protect-platform.js +3 -13
- package/dist/protect-platform.js.map +1 -1
- package/dist/protect-record.js +7 -6
- package/dist/protect-record.js.map +1 -1
- package/dist/protect-sensor.d.ts +6 -3
- package/dist/protect-sensor.js +67 -13
- package/dist/protect-sensor.js.map +1 -1
- package/dist/protect-stream.d.ts +2 -2
- package/dist/protect-stream.js +18 -27
- package/dist/protect-stream.js.map +1 -1
- package/dist/protect-timeshift.d.ts +1 -1
- package/dist/protect-timeshift.js +2 -2
- package/dist/protect-timeshift.js.map +1 -1
- package/dist/protect-viewer.d.ts +2 -1
- package/dist/protect-viewer.js +12 -0
- package/dist/protect-viewer.js.map +1 -1
- package/homebridge-ui/public/index.html +426 -36
- package/homebridge-ui/server.js +12 -12
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-ffmpeg-codecs.js","sourceRoot":"","sources":["../src/protect-ffmpeg-codecs.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"protect-ffmpeg-codecs.js","sourceRoot":"","sources":["../src/protect-ffmpeg-codecs.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,8 @@ export declare class FfmpegOptions {
|
|
|
11
11
|
get audioDecoder(): string;
|
|
12
12
|
get videoDecoder(): string[];
|
|
13
13
|
private defaultVideoEncoderOptions;
|
|
14
|
-
recordEncoder(width: number, height: number, fps: number, bitrate: number, profile: H264Profile, level: H264Level, idrInterval: number): string[];
|
|
15
|
-
streamEncoder(width: number, height: number, fps: number, bitrate: number, profile: H264Profile, level: H264Level, idrInterval: number, useSmartQuality?: boolean): string[];
|
|
14
|
+
recordEncoder(width: number, height: number, fps: number, bitrate: number, profile: H264Profile, level: H264Level, idrInterval: number, inputFps: number): string[];
|
|
15
|
+
streamEncoder(width: number, height: number, fps: number, bitrate: number, profile: H264Profile, level: H264Level, idrInterval: number, inputFps: number, useSmartQuality?: boolean): string[];
|
|
16
16
|
get recordingDefaultChannel(): string | undefined;
|
|
17
17
|
get hostSystemMaxPixels(): number;
|
|
18
18
|
private getH264Level;
|
|
@@ -18,7 +18,7 @@ export class FfmpegOptions {
|
|
|
18
18
|
// Utility function to check that we have a specific decoder codec available to us.
|
|
19
19
|
const validateDecoder = (codec, pixelFormat) => {
|
|
20
20
|
if (!this.platform.codecSupport.hasDecoder("h264", codec)) {
|
|
21
|
-
this.log.error("Unable to enable hardware
|
|
21
|
+
this.log.error("Unable to enable hardware-accelerated decoding. Your video processor does not have support for the " + codec + " decoder. " +
|
|
22
22
|
"Using software decoding instead.");
|
|
23
23
|
this.protectCamera.hints.hardwareDecoding = false;
|
|
24
24
|
return false;
|
|
@@ -29,7 +29,7 @@ export class FfmpegOptions {
|
|
|
29
29
|
// Utility function to check that we have a specific decoder codec available to us.
|
|
30
30
|
const validateHwAccel = (accel, pixelFormat) => {
|
|
31
31
|
if (!this.platform.codecSupport.hasHwAccel(accel)) {
|
|
32
|
-
this.log.error("Unable to enable hardware
|
|
32
|
+
this.log.error("Unable to enable hardware-accelerated decoding. Your video processor does not have support for the " + accel + " hardware accelerator. " +
|
|
33
33
|
"Using software decoding instead.");
|
|
34
34
|
this.protectCamera.hints.hardwareDecoding = false;
|
|
35
35
|
return false;
|
|
@@ -46,7 +46,7 @@ export class FfmpegOptions {
|
|
|
46
46
|
case "raspbian":
|
|
47
47
|
// If it's less than the minimum hardware GPU memory we need on an Raspberry Pi, we revert back to our default decoder.
|
|
48
48
|
if (this.platform.codecSupport.gpuMem < PROTECT_RPI_GPU_MINIMUM) {
|
|
49
|
-
this.log.info("Disabling hardware
|
|
49
|
+
this.log.info("Disabling hardware-accelerated %s. Adjust the GPU memory configuration on your Raspberry Pi to at least %s MB to enable it.", accelCategories, PROTECT_RPI_GPU_MINIMUM);
|
|
50
50
|
this.protectCamera.hints.hardwareDecoding = false;
|
|
51
51
|
this.protectCamera.hints.hardwareTranscoding = false;
|
|
52
52
|
return false;
|
|
@@ -65,7 +65,7 @@ export class FfmpegOptions {
|
|
|
65
65
|
// Utility function to check that we have a specific encoder codec available to us.
|
|
66
66
|
const validateEncoder = (codec) => {
|
|
67
67
|
if (!this.platform.codecSupport.hasEncoder("h264", codec)) {
|
|
68
|
-
this.log.error("Unable to enable hardware
|
|
68
|
+
this.log.error("Unable to enable hardware-accelerated transcoding. Your video processor does not have support for the " + codec + " encoder. " +
|
|
69
69
|
"Using software transcoding instead.");
|
|
70
70
|
this.protectCamera.hints.hardwareTranscoding = false;
|
|
71
71
|
return false;
|
|
@@ -105,7 +105,7 @@ export class FfmpegOptions {
|
|
|
105
105
|
}
|
|
106
106
|
// Inform the user.
|
|
107
107
|
if (this.protectCamera.hints.hardwareDecoding || this.protectCamera.hints.hardwareTranscoding) {
|
|
108
|
-
this.log.info("Hardware
|
|
108
|
+
this.log.info("Hardware-accelerated %s enabled%s.", accelCategories, logMessage.length ? ": " + logMessage : "");
|
|
109
109
|
}
|
|
110
110
|
return this.protectCamera.hints.hardwareTranscoding;
|
|
111
111
|
}
|
|
@@ -171,7 +171,7 @@ export class FfmpegOptions {
|
|
|
171
171
|
case "macOS.Intel":
|
|
172
172
|
// h264_videotoolbox is the macOS hardware decoder and encoder API. We use the following options for decoding video:
|
|
173
173
|
//
|
|
174
|
-
// -hwaccel videotoolbox Select Video Toolbox for hardware
|
|
174
|
+
// -hwaccel videotoolbox Select Video Toolbox for hardware-accelerated H.264 decoding.
|
|
175
175
|
decoderOptions = [
|
|
176
176
|
"-hwaccel", "videotoolbox"
|
|
177
177
|
];
|
|
@@ -179,7 +179,7 @@ export class FfmpegOptions {
|
|
|
179
179
|
case "raspbian":
|
|
180
180
|
// h264_mmal is the preferred Raspberry Pi hardware decoder codec. We use the following options for decoding video:
|
|
181
181
|
//
|
|
182
|
-
// -c:v h264_mmal Select the Multimedia Abstraction Layer codec for hardware
|
|
182
|
+
// -c:v h264_mmal Select the Multimedia Abstraction Layer codec for hardware-accelerated H.264 processing.
|
|
183
183
|
decoderOptions = [
|
|
184
184
|
"-c:v", "h264_mmal"
|
|
185
185
|
];
|
|
@@ -187,8 +187,8 @@ export class FfmpegOptions {
|
|
|
187
187
|
default:
|
|
188
188
|
// h264_qsv is the Intel Quick Sync Video hardware encoder and decoder.
|
|
189
189
|
//
|
|
190
|
-
// -hwaccel qsv Select Quick Sync Video to enable hardware
|
|
191
|
-
// -c:v h264_qsv Select the Quick Sync Video codec for hardware
|
|
190
|
+
// -hwaccel qsv Select Quick Sync Video to enable hardware-accelerated H.264 decoding.
|
|
191
|
+
// -c:v h264_qsv Select the Quick Sync Video codec for hardware-accelerated H.264 processing.
|
|
192
192
|
decoderOptions = [
|
|
193
193
|
"-hwaccel", "qsv",
|
|
194
194
|
"-hwaccel_output_format", "qsv",
|
|
@@ -200,7 +200,20 @@ export class FfmpegOptions {
|
|
|
200
200
|
return decoderOptions;
|
|
201
201
|
}
|
|
202
202
|
// Utility function to provide our default encoder options.
|
|
203
|
-
defaultVideoEncoderOptions(width, height, fps, bitrate, profile, level, idrInterval, useSmartQuality = true) {
|
|
203
|
+
defaultVideoEncoderOptions(width, height, fps, bitrate, profile, level, idrInterval, inputFps, useSmartQuality = true) {
|
|
204
|
+
const videoFilters = [];
|
|
205
|
+
// Set our FFmpeg video filter options:
|
|
206
|
+
//
|
|
207
|
+
// format= Set the pixel formats we want to target for output.
|
|
208
|
+
videoFilters.push("format=" + [...new Set([...this.hwPixelFormat, "yuvj420p"])].join("|"));
|
|
209
|
+
// fps=fps= Use the fps filter to provide the frame rate requested by HomeKit. This has better performance characteristics for Protect
|
|
210
|
+
// rather than using "-r". We only need to apply this filter if our input and output frame rates aren't already identical.
|
|
211
|
+
if (fps !== inputFps) {
|
|
212
|
+
videoFilters.push("fps=fps=" + fps.toString());
|
|
213
|
+
}
|
|
214
|
+
// scale=-2:min(ih\,height) Scale the video to the size that's being requested while respecting aspect ratios and ensuring our final dimensions are
|
|
215
|
+
// a power of two.
|
|
216
|
+
videoFilters.push("scale=-2:min(ih\\," + height.toString() + ")");
|
|
204
217
|
// Default to the tried-and-true libx264. We use the following options by default:
|
|
205
218
|
//
|
|
206
219
|
// -c:v libx264 Use the excellent libx264 H.264 encoder by default, unless the user explicitly overrides it.
|
|
@@ -224,7 +237,7 @@ export class FfmpegOptions {
|
|
|
224
237
|
"-level:v", this.getH264Level(level),
|
|
225
238
|
"-noautoscale",
|
|
226
239
|
"-bf", "0",
|
|
227
|
-
"-filter:v",
|
|
240
|
+
"-filter:v", videoFilters.join(", "),
|
|
228
241
|
"-g:v", (fps * idrInterval).toString(),
|
|
229
242
|
"-bufsize", (2 * bitrate).toString() + "k",
|
|
230
243
|
"-maxrate", (bitrate + (useSmartQuality ? PROTECT_HOMEKIT_STREAMING_HEADROOM : 0)).toString() + "k"
|
|
@@ -248,158 +261,195 @@ export class FfmpegOptions {
|
|
|
248
261
|
return encoderOptions;
|
|
249
262
|
}
|
|
250
263
|
// Return the video encoder options to use for HKSV.
|
|
251
|
-
recordEncoder(width, height, fps, bitrate, profile, level, idrInterval) {
|
|
264
|
+
recordEncoder(width, height, fps, bitrate, profile, level, idrInterval, inputFps) {
|
|
252
265
|
// Generaly, we default to using the same encoding options we use to transcode livestreams, unless we have platform-specific quirks we need to address,
|
|
253
|
-
// such as where we can have hardware
|
|
266
|
+
// such as where we can have hardware-accelerated transcoded livestreaming, but not hardware-accelerated HKSV event recording. The other noteworthy
|
|
254
267
|
// aspect here is that HKSV is quite specific in what it wants, and isn't vary tolerant of creative license in how you may choose to alter bitrate to
|
|
255
268
|
// address quality. When we call our encoders, we also let them know we don't want any additional quality optimizations when transcoding HKSV events.
|
|
256
269
|
switch (this.platform.hostSystem) {
|
|
257
270
|
case "raspbian":
|
|
258
|
-
// Raspberry Pi struggles with hardware
|
|
271
|
+
// Raspberry Pi struggles with hardware-accelerated HKSV event recording due to issues in the FFmpeg codec driver, currently. We hope this improves
|
|
259
272
|
// over time and can offer it to Pi users, or develop a workaround. For now, we default to libx264.
|
|
260
|
-
return this.defaultVideoEncoderOptions(width, height, fps, bitrate, profile, level, idrInterval, false);
|
|
273
|
+
return this.defaultVideoEncoderOptions(width, height, fps, bitrate, profile, level, idrInterval, inputFps, false);
|
|
261
274
|
break;
|
|
262
275
|
default:
|
|
263
276
|
// By default, we use the same options for HKSV and streaming.
|
|
264
|
-
return this.streamEncoder(width, height, fps, bitrate, profile, level, idrInterval, false);
|
|
277
|
+
return this.streamEncoder(width, height, fps, bitrate, profile, level, idrInterval, inputFps, false);
|
|
265
278
|
}
|
|
266
279
|
}
|
|
267
280
|
// Return the video encoder options to use when transcoding.
|
|
268
|
-
streamEncoder(width, height, fps, bitrate, profile, level, idrInterval, useSmartQuality = true) {
|
|
269
|
-
|
|
270
|
-
|
|
281
|
+
streamEncoder(width, height, fps, bitrate, profile, level, idrInterval, inputFps, useSmartQuality = true) {
|
|
282
|
+
// In case we don't have a defined pixel format.
|
|
283
|
+
if (!this.hwPixelFormat.length) {
|
|
284
|
+
this.hwPixelFormat.push("yuvj420p");
|
|
285
|
+
}
|
|
286
|
+
// If we aren't hardware-accelerated, we default to libx264.
|
|
287
|
+
if (!this.protectCamera.hints.hardwareTranscoding) {
|
|
288
|
+
return this.defaultVideoEncoderOptions(width, height, fps, bitrate, profile, level, idrInterval, inputFps, useSmartQuality);
|
|
289
|
+
}
|
|
290
|
+
// If we've enabled hardware-accelerated transcoding, let's select encoder options accordingly.
|
|
291
|
+
//
|
|
292
|
+
// We begin by adjusting the maximum bitrate tolerance used with -bufsize. This provides an upper bound on bitrate, with a little bit extra to allow encoders some
|
|
271
293
|
// variation in order to maximize quality while honoring bandwidth constraints.
|
|
272
294
|
const adjustedMaxBitrate = bitrate + (useSmartQuality ? PROTECT_HOMEKIT_STREAMING_HEADROOM : 0);
|
|
273
|
-
//
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
//
|
|
313
|
-
//
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
//
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
295
|
+
// Check the input and output frame rates to see if we need to change it.
|
|
296
|
+
const useFpsFilter = fps !== inputFps;
|
|
297
|
+
// Initialize our options.
|
|
298
|
+
const encoderOptions = [];
|
|
299
|
+
let videoFilters = [];
|
|
300
|
+
// Set our FFmpeg video filter options:
|
|
301
|
+
//
|
|
302
|
+
// format= Set the pixel formats we want to target for output.
|
|
303
|
+
videoFilters.push("format=" + this.hwPixelFormat.join("|"));
|
|
304
|
+
// fps=fps= Use the fps filter to provide the frame rate requested by HomeKit. This has better performance characteristics for Protect
|
|
305
|
+
// rather than using "-r". We only need to apply this filter if our input and output frame rates aren't already identical.
|
|
306
|
+
if (useFpsFilter) {
|
|
307
|
+
videoFilters.push("fps=fps=" + fps.toString());
|
|
308
|
+
}
|
|
309
|
+
// scale=-2:min(ih\,height) Scale the video to the size that's being requested while respecting aspect ratios and ensuring our final dimensions are
|
|
310
|
+
// a power of two.
|
|
311
|
+
videoFilters.push("scale=-2:min(ih\\," + height.toString() + ")");
|
|
312
|
+
switch (this.platform.hostSystem) {
|
|
313
|
+
case "macOS.Apple":
|
|
314
|
+
// h264_videotoolbox is the macOS hardware encoder API. We use the following options on Apple Silicon:
|
|
315
|
+
//
|
|
316
|
+
// -c:v Specify the macOS hardware encoder, h264_videotoolbox.
|
|
317
|
+
// -allow_sw 1 Allow the use of the software encoder if the hardware encoder is occupied or unavailable.
|
|
318
|
+
// This allows us to scale when we get multiple streaming requests simultaneously that might consume all the available encode engines.
|
|
319
|
+
// -realtime 1 We prefer speed over quality - if the encoder has to make a choice, sacrifice one for the other.
|
|
320
|
+
// -coder cabac Use the cabac encoder for better video quality with the encoding profiles we use in HBUP.
|
|
321
|
+
// -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
|
|
322
|
+
// -level:v 0 We override what HomeKit requests for the H.264 profile level on macOS when we're using hardware-accelerated transcoding because
|
|
323
|
+
// the hardware encoder is particular about how to use levels. Setting it to 0 allows the encoder to decide for itself.
|
|
324
|
+
// -bf 0 Disable B-frames when encoding to increase compatibility against occasionally finicky HomeKit clients.
|
|
325
|
+
// -noautoscale Don't attempt to scale the video stream automatically.
|
|
326
|
+
// -filter:v Set the pixel format, adjust the frame rate if needed, and scale the video to the size we want while respecting aspect ratios and
|
|
327
|
+
// ensuring our final dimensions are a power of two.
|
|
328
|
+
// -g:v Set the group of pictures to the number of frames per second * the interval in between keyframes to ensure a solid
|
|
329
|
+
// livestreamng exerience.
|
|
330
|
+
// -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
|
|
331
|
+
// -maxrate bitrate The maximum bitrate tolerance used in concert with -bufsize to constrain the maximum bitrate permitted.
|
|
332
|
+
encoderOptions.push("-c:v", "h264_videotoolbox", "-allow_sw", "1", "-realtime", "1", "-coder", "cabac", "-profile:v", this.getH264Profile(profile), "-level:v", "0", "-bf", "0", "-noautoscale", "-filter:v", videoFilters.join(", "), "-g:v", (fps * idrInterval).toString(), "-bufsize", (2 * bitrate).toString() + "k", "-maxrate", adjustedMaxBitrate.toString() + "k");
|
|
333
|
+
if (useSmartQuality) {
|
|
334
|
+
// -q:v 90 Use a fixed quality scale of 90, to allow videotoolbox the ability to vary bitrates to achieve the visual quality we want,
|
|
335
|
+
// constrained by our maximum bitrate. This is an Apple Silicon-specific feature.
|
|
336
|
+
encoderOptions.push("-q:v", "90");
|
|
337
|
+
}
|
|
338
|
+
else {
|
|
339
|
+
// -b:v Average bitrate that's being requested by HomeKit.
|
|
340
|
+
encoderOptions.push("-b:v", bitrate.toString() + "k");
|
|
341
|
+
}
|
|
342
|
+
return encoderOptions;
|
|
343
|
+
break;
|
|
344
|
+
case "macOS.Intel":
|
|
345
|
+
// h264_videotoolbox is the macOS hardware encoder API. We use the following options on Intel-based Macs:
|
|
346
|
+
//
|
|
347
|
+
// -c:v Specify the macOS hardware encoder, h264_videotoolbox.
|
|
348
|
+
// -allow_sw 1 Allow the use of the software encoder if the hardware encoder is occupied or unavailable.
|
|
349
|
+
// This allows us to scale when we get multiple streaming requests simultaneously that might consume all the available encode engines.
|
|
350
|
+
// -realtime 1 We prefer speed over quality - if the encoder has to make a choice, sacrifice one for the other.
|
|
351
|
+
// -coder cabac Use the cabac encoder for better video quality with the encoding profiles we use in HBUP.
|
|
352
|
+
// -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
|
|
353
|
+
// -level:v 0 We override what HomeKit requests for the H.264 profile level on macOS when we're using hardware-accelerated transcoding because
|
|
354
|
+
// the hardware encoder is particular about how to use levels. Setting it to 0 allows the encoder to decide for itself.
|
|
355
|
+
// -bf 0 Disable B-frames when encoding to increase compatibility against occasionally finicky HomeKit clients.
|
|
356
|
+
// -noautoscale Don't attempt to scale the video stream automatically.
|
|
357
|
+
// -filter:v Set the pixel format, adjust the frame rate if needed, and scale the video to the size we want while respecting aspect ratios and
|
|
358
|
+
// ensuring our final dimensions are a power of two.
|
|
359
|
+
// -b:v Average bitrate that's being requested by HomeKit. We can't use a quality constraint and allow for more optimization of the bitrate
|
|
360
|
+
// on Intel-based Macs due to hardware / API limitations.
|
|
361
|
+
// -g:v Set the group of pictures to the number of frames per second * the interval in between keyframes to ensure a solid
|
|
362
|
+
// livestreamng exerience.
|
|
363
|
+
// -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
|
|
364
|
+
// -maxrate bitrate The maximum bitrate tolerance used in concert with -bufsize to constrain the maximum bitrate permitted.
|
|
365
|
+
return [
|
|
366
|
+
"-c:v", "h264_videotoolbox",
|
|
367
|
+
"-allow_sw", "1",
|
|
368
|
+
"-realtime", "1",
|
|
369
|
+
"-coder", "cabac",
|
|
370
|
+
"-profile:v", this.getH264Profile(profile),
|
|
371
|
+
"-level:v", "0",
|
|
372
|
+
"-bf", "0",
|
|
373
|
+
"-noautoscale",
|
|
374
|
+
"-filter:v", videoFilters.join(", "),
|
|
375
|
+
"-b:v", bitrate.toString() + "k",
|
|
376
|
+
"-g:v", (fps * idrInterval).toString(),
|
|
377
|
+
"-bufsize", (2 * bitrate).toString() + "k",
|
|
378
|
+
"-maxrate", adjustedMaxBitrate.toString() + "k"
|
|
379
|
+
];
|
|
380
|
+
break;
|
|
381
|
+
case "raspbian":
|
|
382
|
+
// h264_v4l2m2m is the preferred interface to the Raspberry Pi hardware encoder API. We use the following options:
|
|
383
|
+
//
|
|
384
|
+
// -c:v Specify the Raspberry Pi hardware encoder, h264_v4l2m2m.
|
|
385
|
+
// -noautoscale Don't attempt to scale the video stream automatically.
|
|
386
|
+
// -filter:v Set the pixel format, adjust the frame rate if needed, and scale the video to the size we want while respecting aspect ratios and
|
|
387
|
+
// ensuring our final dimensions are a power of two.
|
|
388
|
+
// -b:v Average bitrate that's being requested by HomeKit. We can't use a quality constraint and allow for more optimization of the bitrate
|
|
389
|
+
// due to v4l2m2m limitations.
|
|
390
|
+
// -g:v Set the group of pictures to the number of frames per second * the interval in between keyframes to ensure a solid
|
|
391
|
+
// livestreamng exerience.
|
|
392
|
+
// -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
|
|
393
|
+
// -maxrate bitrate The maximum bitrate tolerance used in concert with -bufsize to constrain the maximum bitrate permitted.
|
|
394
|
+
return [
|
|
395
|
+
"-c:v", "h264_v4l2m2m",
|
|
396
|
+
"-profile:v", this.getH264Profile(profile, true),
|
|
397
|
+
"-bf", "0",
|
|
398
|
+
"-noautoscale",
|
|
399
|
+
"-reset_timestamps", "1",
|
|
400
|
+
"-filter:v", videoFilters.join(", "),
|
|
401
|
+
"-b:v", bitrate.toString() + "k",
|
|
402
|
+
"-g:v", (fps * idrInterval).toString(),
|
|
403
|
+
"-bufsize", (2 * bitrate).toString() + "k",
|
|
404
|
+
"-maxrate", adjustedMaxBitrate.toString() + "k"
|
|
405
|
+
];
|
|
406
|
+
break;
|
|
407
|
+
default:
|
|
408
|
+
// Clear out any prior video filters.
|
|
409
|
+
videoFilters = [];
|
|
410
|
+
// We execute the following GPU-accelerated operations using the Quick Sync Video post-processing filter:
|
|
411
|
+
//
|
|
412
|
+
// format=same Set the output pixel format to the same as the input, since it's already in the GPU.
|
|
413
|
+
// w=...:h... Scale the video to the size that's being requested while respecting aspect ratios.
|
|
414
|
+
videoFilters.push("vpp_qsv=" + [
|
|
415
|
+
"format=same",
|
|
416
|
+
"w=min(iw\\, (iw / ih) * " + height.toString() + ")",
|
|
417
|
+
"h=min(ih\\, " + height.toString() + ")"
|
|
418
|
+
].join(":"));
|
|
419
|
+
// fps=fps= Use the fps filter to provide the frame rate requested by HomeKit. This has better performance characteristics for Protect
|
|
420
|
+
// rather than using "-r". We only need to apply this filter if our input and output frame rates aren't already identical.
|
|
421
|
+
if (useFpsFilter) {
|
|
422
|
+
videoFilters.push("fps=fps=" + fps.toString());
|
|
423
|
+
}
|
|
424
|
+
// h264_qsv is the Intel Quick Sync Video hardware encoder API. We use the following options:
|
|
425
|
+
//
|
|
426
|
+
// -c:v Specify the macOS hardware encoder, h264_videotoolbox.
|
|
427
|
+
// -profile:v Use the H.264 profile that HomeKit is requesting when encoding.
|
|
428
|
+
// -level:v 0 We override what HomeKit requests for the H.264 profile level when we're using hardware-accelerated transcoding because
|
|
429
|
+
// the hardware encoder will determine which levels to use. Setting it to 0 allows the encoder to decide for itself.
|
|
430
|
+
// -bf 0 Disable B-frames when encoding to increase compatibility against occasionally finicky HomeKit clients.
|
|
431
|
+
// -noautoscale Don't attempt to scale the video stream automatically.
|
|
432
|
+
// -init_hw_device Initialize our hardware accelerator and assign it a name to be used in the FFmpeg command line.
|
|
433
|
+
// -filter_hw_device Specify the hardware accelerator to be used with our video filter pipeline.
|
|
434
|
+
// -filter:v Set the pixel format, adjust the frame rate if needed, and scale the video to the size we want while respecting aspect ratios and
|
|
435
|
+
// ensuring our final dimensions are a power of two.
|
|
436
|
+
// -g:v Set the group of pictures to the number of frames per second * the interval in between keyframes to ensure a solid
|
|
437
|
+
// livestreamng exerience.
|
|
438
|
+
// -bufsize size This is the decoder buffer size, which drives the variability / quality of the output bitrate.
|
|
439
|
+
// -maxrate bitrate The maximum bitrate tolerance used in concert with -bufsize to constrain the maximum bitrate permitted.
|
|
440
|
+
encoderOptions.push("-c:v", "h264_qsv", "-profile:v", this.getH264Profile(profile), "-level:v", "0", "-bf", "0", "-noautoscale", "-init_hw_device", "qsv=hw", "-filter_hw_device", "hw", "-filter:v", videoFilters.join(", "), "-g:v", (fps * idrInterval).toString(), "-bufsize", (2 * bitrate).toString() + "k", "-maxrate", adjustedMaxBitrate.toString() + "k");
|
|
441
|
+
if (useSmartQuality) {
|
|
442
|
+
// -global_quality 20 Use a global quality setting of 20, to allow QSV the ability to vary bitrates to achieve the visual quality we want,
|
|
443
|
+
// constrained by our maximum bitrate. This leverages a QSV-specific feature known as intelligent constant quality.
|
|
444
|
+
encoderOptions.push("-global_quality", "20");
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
// -b:v Average bitrate that's being requested by HomeKit.
|
|
448
|
+
encoderOptions.push("-b:v", bitrate.toString() + "k");
|
|
449
|
+
}
|
|
450
|
+
return encoderOptions;
|
|
451
|
+
break;
|
|
400
452
|
}
|
|
401
|
-
// If we aren't hardware accelerated, we default to libx264.
|
|
402
|
-
return this.defaultVideoEncoderOptions(width, height, fps, bitrate, profile, level, idrInterval, useSmartQuality);
|
|
403
453
|
}
|
|
404
454
|
// Use the host system information to determine which recording channel to use by default for HKSV.
|
|
405
455
|
get recordingDefaultChannel() {
|
|
@@ -407,7 +457,7 @@ export class FfmpegOptions {
|
|
|
407
457
|
case "raspbian":
|
|
408
458
|
// For constrained CPU environments like Raspberry Pi, we default to recording from the highest quality channel we can, that's at or below 1080p.
|
|
409
459
|
// That provides a reasonable default, while still allowing users who really want to, to be able to specify something else.
|
|
410
|
-
return this.protectCamera.findRtsp(1920, 1080, undefined,
|
|
460
|
+
return this.protectCamera.findRtsp(1920, 1080, undefined, this.hostSystemMaxPixels)?.channel.name ?? undefined;
|
|
411
461
|
break;
|
|
412
462
|
default:
|
|
413
463
|
// We default to no preference for the default Protect camera channel.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protect-ffmpeg-options.js","sourceRoot":"","sources":["../src/protect-ffmpeg-options.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kCAAkC,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAK5F,MAAM,OAAO,aAAa;IAOxB,sDAAsD;IACtD,YAAY,aAA4B;QAEtC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,+CAA+C;QAC/C,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,uDAAuD;IAC/C,gBAAgB;QAEtB,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC;QAE/G,sIAAsI;QACtI,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAE5C,mFAAmF;YACnF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,WAAqB,EAAW,EAAE;gBAExE,IAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;oBAExD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qGAAqG,GAAG,KAAK,GAAG,YAAY;wBACzI,kCAAkC,CAAC,CAAC;oBAEtC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAClD,OAAO,KAAK,CAAC;iBACd;gBAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAExC,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YAEF,mFAAmF;YACnF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,WAAqB,EAAW,EAAE;gBAExE,IAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;oBAEhD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qGAAqG,GAAG,KAAK,GAAG,yBAAyB;wBACtJ,kCAAkC,CAAC,CAAC;oBAEtC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAElD,OAAO,KAAK,CAAC;iBACd;gBAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAExC,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YAEF,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAE/B,KAAK,aAAa,CAAC;gBACnB,KAAK,aAAa;oBAEhB,qEAAqE;oBACrE,eAAe,CAAC,cAAc,EAAE,CAAC,kBAAkB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;oBACzE,MAAM;gBAER,KAAK,UAAU;oBAEb,uHAAuH;oBACvH,IAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,GAAG,uBAAuB,EAAE;wBAE9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6HAA6H,EACzI,eAAe,EAAE,uBAAuB,CAAC,CAAC;wBAE5C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAClD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC;wBAErD,OAAO,KAAK,CAAC;qBACd;oBAED,4DAA4D;oBAC5D,eAAe,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;oBAElD,MAAM;gBAER;oBAEE,mGAAmG;oBACnG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC;oBAElD,MAAM;aACT;SACF;QAED,mHAAmH;QACnH,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAE/C,mFAAmF;YACnF,MAAM,eAAe,GAAG,CAAC,KAAa,EAAW,EAAE;gBAEjD,IAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;oBAExD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wGAAwG,GAAG,KAAK,GAAG,YAAY;wBAC5I,qCAAqC,CAAC,CAAC;oBAEzC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC;oBAErD,OAAO,KAAK,CAAC;iBACd;gBAED,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YAEF,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAE/B,KAAK,aAAa,CAAC;gBACnB,KAAK,aAAa;oBAEhB,4DAA4D;oBAC5D,eAAe,CAAC,mBAAmB,CAAC,CAAC;oBAErC,gEAAgE;oBAChE,IAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;wBAE1D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8HAA8H,CAAC,CAAC;qBAChJ;oBAED,MAAM;gBAER,KAAK,UAAU;oBAEb,4DAA4D;oBAC5D,eAAe,CAAC,cAAc,CAAC,CAAC;oBAEhC,UAAU,GAAG,qEAAqE;wBAChF,qHAAqH,CAAC;oBAExH,MAAM;gBAER;oBAEE,0EAA0E;oBAC1E,IAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;wBAC7C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;wBAExH,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;wBACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;wBAC1C,UAAU,GAAG,wBAAwB,CAAC;qBACvC;yBAAM;wBAEL,6BAA6B;wBAC7B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAK,CAAC;qBACtD;oBAED,MAAM;aACT;SACF;QAED,mBAAmB;QACnB,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAE5F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,eAAe,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAClH;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,CAAC;IACtD,CAAC;IAED,4DAA4D;IAC5D,IAAW,YAAY;QAErB,oFAAoF;QACpF,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,4DAA4D;QAC5D,MAAM,0BAA0B,GAAG,GAAa,EAAE;YAEhD,IAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;gBAE7D,gHAAgH;gBAChH,EAAE;gBACF,0DAA0D;gBAC1D,qIAAqI;gBACrI,sFAAsF;gBACtF,uGAAuG;gBACvG,OAAO;oBAEL,SAAS,EAAE,YAAY;oBACvB,cAAc,EAAE,GAAG;oBACnB,UAAU,EAAE,GAAG;oBACf,SAAS,EAAE,GAAG;iBACf,CAAC;aACH;iBAAM;gBAEL,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAC;QAEF,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAE/B,KAAK,aAAa,CAAC;YACnB,KAAK,aAAa;gBAEhB,6EAA6E;gBAC7E,IAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;oBAE1D,cAAc,GAAG,0BAA0B,EAAE,CAAC;oBAC9C,MAAM;iBACP;gBAED,uEAAuE;gBACvE,EAAE;gBACF,6DAA6D;gBAC7D,gKAAgK;gBAChK,cAAc,GAAG;oBAEf,SAAS,EAAE,QAAQ;oBACnB,cAAc,EAAE,MAAM;iBACvB,CAAC;gBAEF,MAAM;YAER;gBAEE,cAAc,GAAG,0BAA0B,EAAE,CAAC;gBAE9C,MAAM;SACT;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,iDAAiD;IACjD,IAAW,YAAY;QAErB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,+DAA+D;IAC/D,IAAW,YAAY;QAErB,6DAA6D;QAC7D,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,+GAA+G;QAC/G,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,EAAE;YAE5C,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAE/B,KAAK,aAAa,CAAC;gBACnB,KAAK,aAAa;oBAEhB,oHAAoH;oBACpH,EAAE;oBACF,wFAAwF;oBACxF,cAAc,GAAG;wBAEf,UAAU,EAAE,cAAc;qBAC3B,CAAC;oBAEF,MAAM;gBAER,KAAK,UAAU;oBAEb,mHAAmH;oBACnH,EAAE;oBACF,mHAAmH;oBACnH,cAAc,GAAG;wBAEf,MAAM,EAAE,WAAW;qBACpB,CAAC;oBAEF,MAAM;gBAER;oBAEE,uEAAuE;oBACvE,EAAE;oBACF,iGAAiG;oBACjG,uGAAuG;oBACvG,cAAc,GAAG;wBAEf,UAAU,EAAE,KAAK;wBACjB,wBAAwB,EAAE,KAAK;wBAC/B,MAAM,EAAE,UAAU;qBACnB,CAAC;oBAEF,MAAM;aACT;SACF;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,2DAA2D;IACnD,0BAA0B,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,OAAe,EAC5F,OAAoB,EAAE,KAAgB,EAAE,WAAmB,EAAE,eAAe,GAAG,IAAI;QAEnF,kFAAkF;QAClF,EAAE;QACF,6HAA6H;QAC7H,0IAA0I;QAC1I,gGAAgG;QAChG,sGAAsG;QACtG,uFAAuF;QACvF,uIAAuI;QACvI,mJAAmJ;QACnJ,+DAA+D;QAC/D,mJAAmJ;QACnJ,wDAAwD;QACxD,+HAA+H;QAC/H,uJAAuJ;QACvJ,iIAAiI;QACjI,MAAM,cAAc,GAAG;YAErB,mEAAmE;YACnE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,IAAI,SAAS;YACtD,SAAS,EAAE,UAAU;YACrB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC1C,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACpC,cAAc;YACd,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG;YACzH,MAAM,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE;YACtC,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG;YAC1C,UAAU,EAAE,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG;SACpG,CAAC;QAEF,kJAAkJ;QAClJ,sJAAsJ;QACtJ,uGAAuG;QACvG,IAAG,eAAe,EAAE;YAElB,+IAA+I;YAC/I,wEAAwE;YACxE,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACnC;aAAM;YAEL,mJAAmJ;YACnJ,sJAAsJ;YACtJ,iJAAiJ;YACjJ,yJAAyJ;YACzJ,0BAA0B;YAC1B,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC;SACvD;QAED,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,oDAAoD;IAC7C,aAAa,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,OAAe,EAAE,OAAoB,EAAE,KAAgB,EAAE,WAAmB;QAE3I,uJAAuJ;QACvJ,mJAAmJ;QACnJ,qJAAqJ;QACrJ,qJAAqJ;QACrJ,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAE/B,KAAK,UAAU;gBAEb,mJAAmJ;gBACnJ,mGAAmG;gBACnG,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;gBACxG,MAAM;YAER;gBAEE,8DAA8D;gBAC9D,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;SAC9F;IACH,CAAC;IAED,4DAA4D;IACrD,aAAa,CAAC,KAAa,EAAE,MAAc,EAAE,GAAW,EAAE,OAAe,EAC9E,OAAoB,EAAE,KAAgB,EAAE,WAAmB,EAAE,eAAe,GAAG,IAAI;QAEnF,MAAM,cAAc,GAAG,EAAE,CAAC;QAE1B,mJAAmJ;QACnJ,+EAA+E;QAC/E,MAAM,kBAAkB,GAAG,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhG,+GAA+G;QAC/G,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAE/C,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAE/B,KAAK,aAAa;oBAEhB,sGAAsG;oBACtG,EAAE;oBACF,iFAAiF;oBACjF,oHAAoH;oBACpH,8JAA8J;oBAC9J,2HAA2H;oBAC3H,oHAAoH;oBACpH,0FAA0F;oBAC1F,2JAA2J;oBAC3J,+IAA+I;oBAC/I,iIAAiI;oBACjI,iFAAiF;oBACjF,8JAA8J;oBAC9J,wCAAwC;oBACxC,6IAA6I;oBAC7I,kDAAkD;oBAClD,yHAAyH;oBACzH,kIAAkI;oBAClI,cAAc,CAAC,IAAI,CAEjB,MAAM,EAAE,mBAAmB,EAC3B,WAAW,EAAE,GAAG,EAChB,WAAW,EAAE,GAAG,EAChB,QAAQ,EAAE,OAAO,EACjB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAC1C,UAAU,EAAE,GAAG,EACf,KAAK,EAAE,GAAG,EACV,cAAc,EACd,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,EACxG,MAAM,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE,EACtC,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,EAC1C,UAAU,EAAE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,CAChD,CAAC;oBAEF,IAAG,eAAe,EAAE;wBAElB,mJAAmJ;wBACnJ,uGAAuG;wBACvG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;qBACnC;yBAAM;wBAEL,2EAA2E;wBAC3E,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC;qBACvD;oBAED,OAAO,cAAc,CAAC;oBAEtB,MAAM;gBAER,KAAK,aAAa;oBAEhB,yGAAyG;oBACzG,EAAE;oBACF,iFAAiF;oBACjF,oHAAoH;oBACpH,8JAA8J;oBAC9J,2HAA2H;oBAC3H,oHAAoH;oBACpH,0FAA0F;oBAC1F,2JAA2J;oBAC3J,+IAA+I;oBAC/I,iIAAiI;oBACjI,iFAAiF;oBACjF,8JAA8J;oBAC9J,wCAAwC;oBACxC,8JAA8J;oBAC9J,iFAAiF;oBACjF,6IAA6I;oBAC7I,kDAAkD;oBAClD,yHAAyH;oBACzH,kIAAkI;oBAClI,OAAO;wBAEL,MAAM,EAAE,mBAAmB;wBAC3B,WAAW,EAAE,GAAG;wBAChB,WAAW,EAAE,GAAG;wBAChB,QAAQ,EAAE,OAAO;wBACjB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;wBAC1C,UAAU,EAAE,GAAG;wBACf,KAAK,EAAE,GAAG;wBACV,cAAc;wBACd,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG;wBACxG,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG;wBAChC,MAAM,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE;wBACtC,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG;wBAC1C,UAAU,EAAE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG;qBAChD,CAAC;oBAEF,MAAM;gBAER,KAAK,UAAU;oBAEb,kHAAkH;oBAClH,EAAE;oBACF,mFAAmF;oBACnF,iFAAiF;oBACjF,8JAA8J;oBAC9J,wCAAwC;oBACxC,8JAA8J;oBAC9J,sDAAsD;oBACtD,6IAA6I;oBAC7I,kDAAkD;oBAClD,yHAAyH;oBACzH,kIAAkI;oBAClI,OAAO;wBAEL,MAAM,EAAE,cAAc;wBACtB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC;wBAChD,KAAK,EAAE,GAAG;wBACV,cAAc;wBACd,mBAAmB,EAAE,GAAG;wBACxB,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,sBAAsB,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG;wBACxG,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG;wBAChC,MAAM,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE;wBACtC,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG;wBAC1C,UAAU,EAAE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG;qBAChD,CAAC;oBAEF,MAAM;gBAER;oBAEE,6FAA6F;oBAC7F,EAAE;oBACF,iFAAiF;oBACjF,0FAA0F;oBAC1F,kJAAkJ;oBAClJ,4IAA4I;oBAC5I,iIAAiI;oBACjI,iFAAiF;oBACjF,0HAA0H;oBAC1H,sGAAsG;oBACtG,8JAA8J;oBAC9J,wCAAwC;oBACxC,6IAA6I;oBAC7I,kDAAkD;oBAClD,yHAAyH;oBACzH,kIAAkI;oBAClI,cAAc,CAAC,IAAI,CAEjB,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAC1C,UAAU,EAAE,GAAG,EACf,KAAK,EAAE,GAAG,EACV,cAAc,EACd,iBAAiB,EAAE,QAAQ,EAC3B,mBAAmB,EAAE,IAAI,EACzB,WAAW,EAAE,8CAA8C,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,gBAAgB,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,EAC5H,MAAM,EAAE,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,QAAQ,EAAE,EACtC,UAAU,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,GAAG,EAC1C,UAAU,EAAE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,CAChD,CAAC;oBAEF,IAAG,eAAe,EAAE;wBAElB,6IAA6I;wBAC7I,yIAAyI;wBACzI,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;qBAC9C;yBAAM;wBAEL,2EAA2E;wBAC3E,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC,CAAC;qBACvD;oBAED,OAAO,cAAc,CAAC;oBAEtB,MAAM;aACT;SACF;QAED,4DAA4D;QAC5D,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACpH,CAAC;IAED,mGAAmG;IACnG,IAAW,uBAAuB;QAEhC,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;YAE/B,KAAK,UAAU;gBAEb,iJAAiJ;gBACjJ,2HAA2H;gBAC3H,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;gBAE1H,MAAM;YAER;gBAEE,sEAAsE;gBACtE,OAAO,SAAS,CAAC;SACpB;IACH,CAAC;IAED,8FAA8F;IAC9F,IAAW,mBAAmB;QAE5B,IAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAE/C,QAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;gBAE/B,KAAK,UAAU;oBAEb,0IAA0I;oBAC1I,iIAAiI;oBACjI,sGAAsG;oBACtG,OAAO,IAAI,GAAG,IAAI,CAAC;oBAEnB,MAAM;gBAER;oBAEE,MAAM;aACT;SACF;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED,wDAAwD;IAChD,YAAY,CAAC,KAAgB,EAAE,OAAO,GAAG,KAAK;QAEpD,QAAO,KAAK,EAAE;YAEZ;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,MAAM;YAER;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,MAAM;YAER;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,MAAM;YAER;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9B,MAAM;SACT;IACH,CAAC;IAED,0DAA0D;IAClD,cAAc,CAAC,OAAoB,EAAE,OAAO,GAAG,KAAK;QAE1D,QAAO,OAAO,EAAE;YAEd;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;gBACnC,MAAM;YAER;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBAChC,MAAM;YAER;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/B,MAAM;YAER;gBAEE,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC/B,MAAM;SACT;IACH,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"protect-ffmpeg-options.js","sourceRoot":"","sources":["../src/protect-ffmpeg-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,7 +49,7 @@ export class FfmpegRecordingProcess extends FfmpegProcess {
|
|
|
49
49
|
// -reset_timestamps Reset timestamps at the beginning of each segment.
|
|
50
50
|
// -movflags flags In the generated fMP4 stream: start a new fragment at each keyframe, write a blank MOOV box, and
|
|
51
51
|
// avoid writing absolute offsets
|
|
52
|
-
this.commandLineArgs.push("-map", "0:v:0", ...this.protectCamera.stream.ffmpegOptions.recordEncoder(recordingConfig.videoCodec.resolution[0], recordingConfig.videoCodec.resolution[1],
|
|
52
|
+
this.commandLineArgs.push("-map", "0:v:0", ...this.protectCamera.stream.ffmpegOptions.recordEncoder(recordingConfig.videoCodec.resolution[0], recordingConfig.videoCodec.resolution[1], recordingConfig.videoCodec.resolution[2], recordingConfig.videoCodec.parameters.bitRate, recordingConfig.videoCodec.parameters.profile, recordingConfig.videoCodec.parameters.level, recordingConfig.videoCodec.parameters.iFrameInterval / 1000, rtspEntry.channel.fps), "-reset_timestamps", "1", "-movflags", "frag_keyframe+empty_moov+default_base_moof");
|
|
53
53
|
if (isAudioActive) {
|
|
54
54
|
// Configure the audio portion of the command line. Options we use are:
|
|
55
55
|
//
|