io.appium.settings 8.0.10 → 8.1.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/CHANGELOG.md +6 -0
- package/README.md +97 -0
- package/apks/settings_apk-debug.apk +0 -0
- package/build/lib/client.d.ts +4 -0
- package/build/lib/client.d.ts.map +1 -1
- package/build/lib/client.js +4 -0
- package/build/lib/client.js.map +1 -1
- package/build/lib/commands/clipboard.d.ts.map +1 -1
- package/build/lib/commands/clipboard.js +1 -1
- package/build/lib/commands/clipboard.js.map +1 -1
- package/build/lib/commands/jpeg-stream.d.ts +51 -0
- package/build/lib/commands/jpeg-stream.d.ts.map +1 -0
- package/build/lib/commands/jpeg-stream.js +152 -0
- package/build/lib/commands/jpeg-stream.js.map +1 -0
- package/build/lib/commands/media-projection.d.ts.map +1 -1
- package/build/lib/commands/media-projection.js.map +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/network.js.map +1 -1
- package/build/lib/commands/types.d.ts +65 -0
- package/build/lib/commands/types.d.ts.map +1 -1
- package/build/lib/commands/video-stream.d.ts +50 -0
- package/build/lib/commands/video-stream.d.ts.map +1 -0
- package/build/lib/commands/video-stream.js +160 -0
- package/build/lib/commands/video-stream.js.map +1 -0
- package/build/lib/constants.d.ts +7 -0
- package/build/lib/constants.d.ts.map +1 -1
- package/build/lib/constants.js +7 -0
- package/build/lib/constants.js.map +1 -1
- package/build/lib/index.js +1 -1
- package/build/lib/index.js.map +1 -1
- package/build/lib/{utils.d.ts → utils/apk-path.d.ts} +1 -1
- package/build/lib/utils/apk-path.d.ts.map +1 -0
- package/build/lib/{utils.js → utils/apk-path.js} +1 -1
- package/build/lib/utils/apk-path.js.map +1 -0
- package/build/lib/utils/index.d.ts +5 -0
- package/build/lib/utils/index.d.ts.map +1 -0
- package/build/lib/utils/index.js +4 -0
- package/build/lib/utils/index.js.map +1 -0
- package/build/lib/utils/streaming-protocol.d.ts +47 -0
- package/build/lib/utils/streaming-protocol.d.ts.map +1 -0
- package/build/lib/utils/streaming-protocol.js +67 -0
- package/build/lib/utils/streaming-protocol.js.map +1 -0
- package/build/lib/utils/streaming-transport.d.ts +142 -0
- package/build/lib/utils/streaming-transport.d.ts.map +1 -0
- package/build/lib/utils/streaming-transport.js +416 -0
- package/build/lib/utils/streaming-transport.js.map +1 -0
- package/lib/client.ts +5 -0
- package/lib/commands/clipboard.ts +1 -0
- package/lib/commands/jpeg-stream.ts +171 -0
- package/lib/commands/media-projection.ts +1 -5
- package/lib/commands/network.ts +1 -1
- package/lib/commands/types.ts +70 -0
- package/lib/commands/video-stream.ts +179 -0
- package/lib/constants.ts +10 -0
- package/lib/index.ts +1 -1
- package/lib/utils/index.ts +4 -0
- package/lib/utils/streaming-protocol.ts +93 -0
- package/lib/utils/streaming-transport.ts +450 -0
- package/package.json +1 -1
- package/build/lib/utils.d.ts.map +0 -1
- package/build/lib/utils.js.map +0 -1
- /package/lib/{utils.ts → utils/apk-path.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [8.1.0](https://github.com/appium/io.appium.settings/compare/v8.0.10...v8.1.0) (2026-09-27)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
* Add streaming support ([#320](https://github.com/appium/io.appium.settings/issues/320)) ([d166701](https://github.com/appium/io.appium.settings/commit/d16670175769e62e5dc8edb0883705f1baaa46bf))
|
|
6
|
+
|
|
1
7
|
## [8.0.10](https://github.com/appium/io.appium.settings/compare/v8.0.9...v8.0.10) (2026-09-26)
|
|
2
8
|
|
|
3
9
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -427,6 +427,103 @@ Obtain Recording Output File:
|
|
|
427
427
|
adb pull /storage/emulated/0/Android/data/io.appium.settings/files/abc.mp4 abc.mp4
|
|
428
428
|
```
|
|
429
429
|
|
|
430
|
+
## Live Screen Streaming (JPEG / H.264 / HEVC)
|
|
431
|
+
|
|
432
|
+
In addition to file-based recording above, Appium Settings can stream the screen live as
|
|
433
|
+
either a sequence of JPEG frames or an H.264/HEVC video (with an optional interleaved AAC
|
|
434
|
+
audio track), instead of writing a file. This is a **raw local-socket protocol**, not an
|
|
435
|
+
HTTP/MJPEG server: the app opens a local abstract socket on-device, and the consumer is
|
|
436
|
+
expected to `adb forward` it to a host TCP port and parse the (simple, length-prefixed)
|
|
437
|
+
frame protocol itself. The [SettingsApp](./lib/client.js) wrapper (`makeJpegStreamSession()` /
|
|
438
|
+
`makeVideoStreamSession()`) already does this for you and is the recommended way to consume
|
|
439
|
+
either stream; talking to the socket directly is only needed for other languages/tools.
|
|
440
|
+
|
|
441
|
+
Required steps to activate streaming (same as recording; `RECORD_AUDIO` is only needed if you
|
|
442
|
+
enable the video stream's `audio` option):
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
adb shell pm grant io.appium.settings android.permission.RECORD_AUDIO
|
|
446
|
+
adb shell appops set io.appium.settings PROJECT_MEDIA allow
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
### JPEG streaming
|
|
450
|
+
|
|
451
|
+
Start:
|
|
452
|
+
```bash
|
|
453
|
+
adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.jpeg.ACTION_START --es socket_name my-jpeg-stream --es fps 30 --es quality 80 --es scale 100
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
- `socket_name` (Mandatory) - Name of the local abstract socket the app should listen on; forward it with `adb forward tcp:<port> localabstract:<socket_name>`
|
|
457
|
+
- `fps` (Optional) - Default value: 60
|
|
458
|
+
- `quality` (Optional) - JPEG quality, 1-100. Default value: 80
|
|
459
|
+
- `scale` (Optional) - Percentage (1-100) to scale the captured frame to before encoding. Default value: 100
|
|
460
|
+
|
|
461
|
+
Stop:
|
|
462
|
+
```bash
|
|
463
|
+
adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.jpeg.ACTION_STOP
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### Video streaming
|
|
467
|
+
|
|
468
|
+
Start:
|
|
469
|
+
```bash
|
|
470
|
+
adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.video.ACTION_START --es socket_name my-video-stream --es codec h264 --es fps 30 --es bitrate 4000000 --es resolution 1920x1080 --es audio false
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
- `socket_name` (Mandatory) - Same meaning as for JPEG streaming above
|
|
474
|
+
- `codec` (Optional) - `h264` or `hevc`. Default value: `h264`
|
|
475
|
+
- `fps` (Optional) - Default value: 30
|
|
476
|
+
- `bitrate` (Optional) - In bits per second. Default value: 4000000 (4 Mbps)
|
|
477
|
+
- `resolution` (Optional) - Same syntax/allowed values as the recording `resolution` argument above
|
|
478
|
+
- `audio` (Optional) - `true` to interleave an AAC audio track captured via `AudioPlaybackCaptureConfiguration`. Default value: `false`
|
|
479
|
+
|
|
480
|
+
Stop:
|
|
481
|
+
```bash
|
|
482
|
+
adb shell am start -n "io.appium.settings/io.appium.settings.Settings" -a io.appium.settings.streaming.video.ACTION_STOP
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
### Node usage example
|
|
486
|
+
|
|
487
|
+
```js
|
|
488
|
+
import ADB from 'appium-adb'
|
|
489
|
+
import { SettingsApp } from 'io.appium.settings';
|
|
490
|
+
|
|
491
|
+
async function main() {
|
|
492
|
+
const app = new SettingsApp({adb: await ADB.createADB()});
|
|
493
|
+
await app.adjustMediaProjectionServicePermissions();
|
|
494
|
+
|
|
495
|
+
const session = app.makeVideoStreamSession();
|
|
496
|
+
await session.start({codec: 'h264', fps: 30, audio: true});
|
|
497
|
+
for await (const unit of session.accessUnits()) {
|
|
498
|
+
console.log(unit.track, unit.data.length, unit.isKeyFrame);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
main();
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
By default the Node wrapper picks an OS-assigned ephemeral port for the `adb forward` bridge
|
|
506
|
+
between the device's local socket and the host. Both `makeJpegStreamSession().start()` and
|
|
507
|
+
`makeVideoStreamSession().start()` also accept:
|
|
508
|
+
|
|
509
|
+
- `localPort` (Optional) - Use this exact local TCP port instead. Throws if it's already in use.
|
|
510
|
+
- `localPortRange` (Optional) - A `[min, max]` tuple; the first free port in this inclusive range is used. Throws if none are free.
|
|
511
|
+
|
|
512
|
+
Only one of `localPort`/`localPortRange` may be provided at a time. This is useful if you need a
|
|
513
|
+
predictable port (e.g. for a firewall rule or a proxy in front of the stream):
|
|
514
|
+
|
|
515
|
+
```js
|
|
516
|
+
await session.start({codec: 'h264', localPort: 8000});
|
|
517
|
+
// or
|
|
518
|
+
await session.start({codec: 'h264', localPortRange: [8000, 8010]});
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
_Note_
|
|
522
|
+
|
|
523
|
+
JPEG streaming throughput is CPU-bound (each frame is compressed on-device via
|
|
524
|
+
`Bitmap.compress`), so on lower-end devices or emulators you may need to reduce `fps`,
|
|
525
|
+
`quality` and/or `scale` from their defaults to keep up with real-time capture.
|
|
526
|
+
|
|
430
527
|
|
|
431
528
|
## Notes:
|
|
432
529
|
|
|
Binary file
|
package/build/lib/client.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { setAnimationState } from './commands/animation.js';
|
|
|
4
4
|
import { setBluetoothState, unpairAllBluetoothDevices } from './commands/bluetooth.js';
|
|
5
5
|
import { getClipboard } from './commands/clipboard.js';
|
|
6
6
|
import { setGeoLocation, getGeoLocation, refreshGeoLocationCache } from './commands/geolocation.js';
|
|
7
|
+
import { makeJpegStreamSession } from './commands/jpeg-stream.js';
|
|
7
8
|
import { setDeviceLocale, listSupportedLocales } from './commands/locale.js';
|
|
8
9
|
import { makeMediaProjectionRecorder, adjustMediaProjectionServicePermissions } from './commands/media-projection.js';
|
|
9
10
|
import { scanMedia } from './commands/media.js';
|
|
@@ -11,6 +12,7 @@ import { setDataState, setWifiState } from './commands/network.js';
|
|
|
11
12
|
import { getNotifications, adjustNotificationsPermissions } from './commands/notifications.js';
|
|
12
13
|
import { getSmsList } from './commands/sms.js';
|
|
13
14
|
import { performEditorAction, typeUnicode } from './commands/typing.js';
|
|
15
|
+
import { makeVideoStreamSession } from './commands/video-stream.js';
|
|
14
16
|
export interface SettingsAppOpts {
|
|
15
17
|
adb: ADB;
|
|
16
18
|
}
|
|
@@ -44,6 +46,8 @@ export declare class SettingsApp {
|
|
|
44
46
|
typeUnicode: typeof typeUnicode;
|
|
45
47
|
makeMediaProjectionRecorder: typeof makeMediaProjectionRecorder;
|
|
46
48
|
adjustMediaProjectionServicePermissions: typeof adjustMediaProjectionServicePermissions;
|
|
49
|
+
makeJpegStreamSession: typeof makeJpegStreamSession;
|
|
50
|
+
makeVideoStreamSession: typeof makeVideoStreamSession;
|
|
47
51
|
constructor(opts: SettingsAppOpts);
|
|
48
52
|
/**
|
|
49
53
|
* Ensures that Appium Settings helper application is running
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAC,2BAA2B,EAAE,uCAAuC,EAAC,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAE,8BAA8B,EAAC,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,iBAAiB,EAAE,yBAAyB,EAAC,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAC,eAAe,EAAE,oBAAoB,EAAC,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAC,2BAA2B,EAAE,uCAAuC,EAAC,MAAM,gCAAgC,CAAC;AACpH,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAC,YAAY,EAAE,YAAY,EAAC,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAC,gBAAgB,EAAE,8BAA8B,EAAC,MAAM,6BAA6B,CAAC;AAC7F,OAAO,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAC,mBAAmB,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAIlE,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,GAAG,CAAC;CACV;AAED,MAAM,WAAW,yBAAyB;IACxC,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,8EAA8E;IAC9E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,iBAAiB,2BAAqB;IAEtC,iBAAiB,2BAAqB;IACtC,yBAAyB,mCAA6B;IAEtD,YAAY,sBAAgB;IAE5B,cAAc,wBAAkB;IAChC,cAAc,wBAAkB;IAChC,uBAAuB,iCAA2B;IAElD,oBAAoB,8BAAwB;IAC5C,eAAe,yBAAmB;IAElC,SAAS,mBAAa;IAEtB,YAAY,sBAAgB;IAC5B,YAAY,sBAAgB;IAE5B,gBAAgB,0BAAoB;IACpC,8BAA8B,wCAAkC;IAChE,UAAU,oBAAc;IAExB,mBAAmB,6BAAuB;IAC1C,WAAW,qBAAe;IAE1B,2BAA2B,qCAA+B;IAC1D,uCAAuC,iDAA2C;IAElF,qBAAqB,+BAAyB;IAC9C,sBAAsB,gCAA0B;gBAEpC,IAAI,EAAE,eAAe;IAKjC;;;;;;;OAOG;IACG,cAAc,CAAC,IAAI,GAAE,yBAA8B,GAAG,OAAO,CAAC,WAAW,CAAC;IA6ChF;;;;;OAKG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAO/C;;;;;;;;OAQG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAiB/F;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,GAAG;CAoBxD"}
|
package/build/lib/client.js
CHANGED
|
@@ -3,6 +3,7 @@ import { setAnimationState } from './commands/animation.js';
|
|
|
3
3
|
import { setBluetoothState, unpairAllBluetoothDevices } from './commands/bluetooth.js';
|
|
4
4
|
import { getClipboard } from './commands/clipboard.js';
|
|
5
5
|
import { setGeoLocation, getGeoLocation, refreshGeoLocationCache } from './commands/geolocation.js';
|
|
6
|
+
import { makeJpegStreamSession } from './commands/jpeg-stream.js';
|
|
6
7
|
import { setDeviceLocale, listSupportedLocales } from './commands/locale.js';
|
|
7
8
|
import { makeMediaProjectionRecorder, adjustMediaProjectionServicePermissions } from './commands/media-projection.js';
|
|
8
9
|
import { scanMedia } from './commands/media.js';
|
|
@@ -10,6 +11,7 @@ import { setDataState, setWifiState } from './commands/network.js';
|
|
|
10
11
|
import { getNotifications, adjustNotificationsPermissions } from './commands/notifications.js';
|
|
11
12
|
import { getSmsList } from './commands/sms.js';
|
|
12
13
|
import { performEditorAction, typeUnicode } from './commands/typing.js';
|
|
14
|
+
import { makeVideoStreamSession } from './commands/video-stream.js';
|
|
13
15
|
import { SETTINGS_HELPER_ID, SETTINGS_HELPER_MAIN_ACTIVITY } from './constants.js';
|
|
14
16
|
import { log, LOG_PREFIX } from './logger.js';
|
|
15
17
|
export class SettingsApp {
|
|
@@ -34,6 +36,8 @@ export class SettingsApp {
|
|
|
34
36
|
typeUnicode = typeUnicode;
|
|
35
37
|
makeMediaProjectionRecorder = makeMediaProjectionRecorder;
|
|
36
38
|
adjustMediaProjectionServicePermissions = adjustMediaProjectionServicePermissions;
|
|
39
|
+
makeJpegStreamSession = makeJpegStreamSession;
|
|
40
|
+
makeVideoStreamSession = makeVideoStreamSession;
|
|
37
41
|
constructor(opts) {
|
|
38
42
|
this.adb = opts.adb;
|
|
39
43
|
this.log = log;
|
package/build/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../lib/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAI9C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAI9C;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BrE"}
|
|
@@ -25,7 +25,7 @@ export async function getClipboard() {
|
|
|
25
25
|
catch (err) {
|
|
26
26
|
throw new Error(`Cannot retrieve the current clipboard content from the device. ` +
|
|
27
27
|
`Make sure the Appium Settings application is up to date. ` +
|
|
28
|
-
`Original error: ${err.message}
|
|
28
|
+
`Original error: ${err.message}`, { cause: err });
|
|
29
29
|
}
|
|
30
30
|
const match = /data="([^"]*)"/.exec(output);
|
|
31
31
|
if (!match) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,0BAA0B,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,KAAK,IAAqB,EAAE,CACpD,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,0BAA0B,CAAC,EAC5D,oBAAoB,EACpB,KAAK,CACN,CAAC;IACJ,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM;YACJ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;gBAClC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAC/D,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,2DAA2D;YAC3D,mBAAmB,GAAG,CAAC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../lib/commands/clipboard.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAE,0BAA0B,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,+BAA+B,CAAC,CAAC;IAC5D,MAAM,IAAI,CAAC,cAAc,CAAC,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,KAAK,IAAqB,EAAE,CACpD,MAAM,IAAI,CAAC,cAAc,CACvB,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,0BAA0B,CAAC,EAC5D,oBAAoB,EACpB,KAAK,CACN,CAAC;IACJ,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM;YACJ,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;gBAClC,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC;gBAC/D,CAAC,CAAC,MAAM,iBAAiB,EAAE,CAAC;IAClC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,iEAAiE;YAC/D,2DAA2D;YAC3D,mBAAmB,GAAG,CAAC,OAAO,EAAE,EAClC,EAAC,KAAK,EAAE,GAAG,EAAC,CACb,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,MAAM,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { ADB } from 'appium-adb';
|
|
2
|
+
import type { SettingsApp } from '../client.js';
|
|
3
|
+
import type { JpegFrame, StartJpegStreamOpts } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a new instance of the live JPEG frame streaming session.
|
|
6
|
+
* The stream only works since Android API 29+
|
|
7
|
+
*
|
|
8
|
+
* @returns The streaming session instance
|
|
9
|
+
*/
|
|
10
|
+
export declare function makeJpegStreamSession(this: SettingsApp): JpegStreamSession;
|
|
11
|
+
/**
|
|
12
|
+
* Live JPEG frame streaming session for the device screen.
|
|
13
|
+
* This class provides methods to start, stop, and consume a continuous
|
|
14
|
+
* sequence of JPEG-encoded frames over a local socket (API 29+).
|
|
15
|
+
*/
|
|
16
|
+
export declare class JpegStreamSession {
|
|
17
|
+
private readonly adb;
|
|
18
|
+
private transport;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new JpegStreamSession instance.
|
|
21
|
+
*
|
|
22
|
+
* @param adb - ADB instance for device communication
|
|
23
|
+
*/
|
|
24
|
+
constructor(adb: ADB);
|
|
25
|
+
/**
|
|
26
|
+
* Checks if the JPEG stream is currently running.
|
|
27
|
+
*/
|
|
28
|
+
isRunning(): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Starts the live JPEG frame stream.
|
|
31
|
+
* If a stream is already running, this method returns false without starting a new one.
|
|
32
|
+
*
|
|
33
|
+
* @param opts Streaming options including fps, quality, scale, and the local port to use
|
|
34
|
+
* @returns True if the stream was started successfully, false if already running
|
|
35
|
+
* @throws {Error} If the stream fails to start within the timeout period
|
|
36
|
+
*/
|
|
37
|
+
start(opts?: StartJpegStreamOpts): Promise<boolean>;
|
|
38
|
+
/**
|
|
39
|
+
* Yields JPEG frames as they arrive from the device.
|
|
40
|
+
* `start()` must be called before iterating.
|
|
41
|
+
*/
|
|
42
|
+
frames(): AsyncGenerator<JpegFrame>;
|
|
43
|
+
/**
|
|
44
|
+
* Stops the currently running JPEG stream.
|
|
45
|
+
*
|
|
46
|
+
* @returns True if the stream was stopped successfully, false if it was not running
|
|
47
|
+
* @throws {Error} If the stream fails to stop within the timeout period
|
|
48
|
+
*/
|
|
49
|
+
stop(): Promise<boolean>;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=jpeg-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpeg-stream.d.ts","sourceRoot":"","sources":["../../../lib/commands/jpeg-stream.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAS9C,OAAO,KAAK,EAAC,SAAS,EAAE,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAK/D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAE1E;AAgBD;;;;GAIG;AACH,qBAAa,iBAAiB;IAQhB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPhC,OAAO,CAAC,SAAS,CAAgC;IAEjD;;;;OAIG;gBAC0B,GAAG,EAAE,GAAG;IAErC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAgD7D;;;OAGG;IACI,MAAM,IAAI,cAAc,CAAC,SAAS,CAAC;IAa1C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAyB/B"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { waitForCondition } from 'asyncbox';
|
|
3
|
+
import { JPEG_STREAM_ACTION_START, JPEG_STREAM_ACTION_STOP, JPEG_STREAM_SERVICE_NAME, SETTINGS_HELPER_ID, STREAMING_ACTIVITY_NAME, } from '../constants.js';
|
|
4
|
+
import { StreamTransport, validateLocalPortOpts } from '../utils/index.js';
|
|
5
|
+
const STREAM_STARTUP_TIMEOUT_MS = 3 * 1000;
|
|
6
|
+
const STREAM_STOP_TIMEOUT_MS = 3 * 1000;
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new instance of the live JPEG frame streaming session.
|
|
9
|
+
* The stream only works since Android API 29+
|
|
10
|
+
*
|
|
11
|
+
* @returns The streaming session instance
|
|
12
|
+
*/
|
|
13
|
+
export function makeJpegStreamSession() {
|
|
14
|
+
return new JpegStreamSession(this.adb);
|
|
15
|
+
}
|
|
16
|
+
function validateJpegStreamOpts(opts) {
|
|
17
|
+
const { fps, quality, scale } = opts;
|
|
18
|
+
if (fps !== undefined && (!Number.isInteger(fps) || fps <= 0)) {
|
|
19
|
+
throw new TypeError(`fps must be a positive integer, got ${fps}`);
|
|
20
|
+
}
|
|
21
|
+
if (quality !== undefined && (!Number.isInteger(quality) || quality < 1 || quality > 100)) {
|
|
22
|
+
throw new TypeError(`quality must be an integer between 1 and 100, got ${quality}`);
|
|
23
|
+
}
|
|
24
|
+
if (scale !== undefined && (!Number.isInteger(scale) || scale < 1 || scale > 100)) {
|
|
25
|
+
throw new TypeError(`scale must be an integer between 1 and 100, got ${scale}`);
|
|
26
|
+
}
|
|
27
|
+
validateLocalPortOpts(opts);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Live JPEG frame streaming session for the device screen.
|
|
31
|
+
* This class provides methods to start, stop, and consume a continuous
|
|
32
|
+
* sequence of JPEG-encoded frames over a local socket (API 29+).
|
|
33
|
+
*/
|
|
34
|
+
export class JpegStreamSession {
|
|
35
|
+
adb;
|
|
36
|
+
transport = null;
|
|
37
|
+
/**
|
|
38
|
+
* Creates a new JpegStreamSession instance.
|
|
39
|
+
*
|
|
40
|
+
* @param adb - ADB instance for device communication
|
|
41
|
+
*/
|
|
42
|
+
constructor(adb) {
|
|
43
|
+
this.adb = adb;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Checks if the JPEG stream is currently running.
|
|
47
|
+
*/
|
|
48
|
+
async isRunning() {
|
|
49
|
+
const stdout = await this.adb.shell(['dumpsys', 'activity', 'services', JPEG_STREAM_SERVICE_NAME]);
|
|
50
|
+
return stdout.includes(JPEG_STREAM_SERVICE_NAME);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Starts the live JPEG frame stream.
|
|
54
|
+
* If a stream is already running, this method returns false without starting a new one.
|
|
55
|
+
*
|
|
56
|
+
* @param opts Streaming options including fps, quality, scale, and the local port to use
|
|
57
|
+
* @returns True if the stream was started successfully, false if already running
|
|
58
|
+
* @throws {Error} If the stream fails to start within the timeout period
|
|
59
|
+
*/
|
|
60
|
+
async start(opts = {}) {
|
|
61
|
+
validateJpegStreamOpts(opts);
|
|
62
|
+
if (await this.isRunning()) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const { fps, quality, scale, localPort, localPortRange } = opts;
|
|
66
|
+
// Socket names are validated on-device against ^[a-zA-Z0-9._-]{1,200}$, so this
|
|
67
|
+
// must not contain a "/" - unlike JPEG_STREAM_SERVICE_NAME.
|
|
68
|
+
const socketName = `${SETTINGS_HELPER_ID}.jpegstream.${randomUUID()}`;
|
|
69
|
+
const args = [
|
|
70
|
+
'am',
|
|
71
|
+
'start',
|
|
72
|
+
'-n',
|
|
73
|
+
STREAMING_ACTIVITY_NAME,
|
|
74
|
+
'-a',
|
|
75
|
+
JPEG_STREAM_ACTION_START,
|
|
76
|
+
'--es',
|
|
77
|
+
'socket_name',
|
|
78
|
+
socketName,
|
|
79
|
+
];
|
|
80
|
+
if (fps) {
|
|
81
|
+
args.push('--es', 'fps', `${fps}`);
|
|
82
|
+
}
|
|
83
|
+
if (quality) {
|
|
84
|
+
args.push('--es', 'quality', `${quality}`);
|
|
85
|
+
}
|
|
86
|
+
if (scale) {
|
|
87
|
+
args.push('--es', 'scale', `${scale}`);
|
|
88
|
+
}
|
|
89
|
+
await this.adb.shell(args);
|
|
90
|
+
try {
|
|
91
|
+
await waitForCondition(async () => await this.isRunning(), {
|
|
92
|
+
waitMs: STREAM_STARTUP_TIMEOUT_MS,
|
|
93
|
+
intervalMs: 300,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
throw new Error(`The JPEG stream is not running after ${STREAM_STARTUP_TIMEOUT_MS}ms. ` +
|
|
98
|
+
`Please check the logcat output for more details.`);
|
|
99
|
+
}
|
|
100
|
+
this.transport = await StreamTransport.connect(this.adb, socketName, { localPort, localPortRange });
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Yields JPEG frames as they arrive from the device.
|
|
105
|
+
* `start()` must be called before iterating.
|
|
106
|
+
*/
|
|
107
|
+
async *frames() {
|
|
108
|
+
if (!this.transport) {
|
|
109
|
+
throw new Error('The JPEG stream has not been started. Call start() first.');
|
|
110
|
+
}
|
|
111
|
+
for await (const frame of this.transport.frames()) {
|
|
112
|
+
yield {
|
|
113
|
+
data: frame.data,
|
|
114
|
+
sequence: Number(frame.sequence),
|
|
115
|
+
timestampMicros: Number(frame.timestampMicros),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Stops the currently running JPEG stream.
|
|
121
|
+
*
|
|
122
|
+
* @returns True if the stream was stopped successfully, false if it was not running
|
|
123
|
+
* @throws {Error} If the stream fails to stop within the timeout period
|
|
124
|
+
*/
|
|
125
|
+
async stop() {
|
|
126
|
+
try {
|
|
127
|
+
if (!(await this.isRunning())) {
|
|
128
|
+
// The on-device service may have already stopped itself (e.g. the client
|
|
129
|
+
// disconnected), leaving a local transport/adb-forward that still needs closing.
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
await this.adb.shell(['am', 'start', '-n', STREAMING_ACTIVITY_NAME, '-a', JPEG_STREAM_ACTION_STOP]);
|
|
133
|
+
try {
|
|
134
|
+
await waitForCondition(async () => !(await this.isRunning()), {
|
|
135
|
+
waitMs: STREAM_STOP_TIMEOUT_MS,
|
|
136
|
+
intervalMs: 300,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
throw new Error(`The attempt to stop the current JPEG stream timed out after ${STREAM_STOP_TIMEOUT_MS}ms`);
|
|
141
|
+
}
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
if (this.transport) {
|
|
146
|
+
await this.transport.close();
|
|
147
|
+
this.transport = null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=jpeg-stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jpeg-stream.js","sourceRoot":"","sources":["../../../lib/commands/jpeg-stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-projection.d.ts","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAQ9C,OAAO,KAAK,EAAC,iCAAiC,EAAC,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,GAAG,uBAAuB,CAEtF;AAED;;;;;GAKG;AACH,wBAAsB,uCAAuC,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAMjG;AAMD;;;;GAIG;AACH,qBAAa,uBAAuB;
|
|
1
|
+
{"version":3,"file":"media-projection.d.ts","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAQ9C,OAAO,KAAK,EAAC,iCAAiC,EAAC,MAAM,YAAY,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,WAAW,GAAG,uBAAuB,CAEtF;AAED;;;;;GAKG;AACH,wBAAsB,uCAAuC,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAMjG;AAMD;;;;GAIG;AACH,qBAAa,uBAAuB;IAMtB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhC;;;;OAIG;gBAC0B,GAAG,EAAE,GAAG;IAErC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,GAAE,iCAAsC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC3E;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;OAIG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAe1C;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAmB/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAG1C,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAGzB;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uCAAuC;IAC3D,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,4BAA4B,GAAG,CAAC,GAAG,IAAI,CAAC;AAC9C,MAAM,yBAAyB,GAAG,CAAC,GAAG,IAAI,CAAC;AAC3C,MAAM,eAAe,GAAG,oCAAoC,kBAAkB,QAAQ,CAAC;AAEvF;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;
|
|
1
|
+
{"version":3,"file":"media-projection.js","sourceRoot":"","sources":["../../../lib/commands/media-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,7 +45,7 @@ export async function setDataState(on, isEmulator = false) {
|
|
|
45
45
|
await this.adb.shell(['cmd', 'phone', 'data', on ? 'enable' : 'disable']);
|
|
46
46
|
}
|
|
47
47
|
catch (e) {
|
|
48
|
-
throw new Error(`Cannot change the data state. Original error: ${e.stderr || e.message}
|
|
48
|
+
throw new Error(`Cannot change the data state. Original error: ${e.stderr || e.message}`, { cause: e });
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../lib/commands/network.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,8BAA8B,EAAE,gCAAgC,EAAC,MAAM,iBAAiB,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,6DAA6D;QAC7D,wEAAwE;QACxE,kBAAkB;QAClB,MAAM,IAAI,CAAC,cAAc,CACvB;YACE,IAAI;YACJ,8BAA8B;YAC9B,IAAI;YACJ,gCAAgC;YAChC,MAAM;YACN,WAAW;YACX,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC1B,EACD,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,OAAO,CACpC,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../lib/commands/network.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,8BAA8B,EAAE,gCAAgC,EAAC,MAAM,iBAAiB,CAAC;AAEjG;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;QACxC,6DAA6D;QAC7D,wEAAwE;QACxE,kBAAkB;QAClB,MAAM,IAAI,CAAC,cAAc,CACvB;YACE,IAAI;YACJ,8BAA8B;YAC9B,IAAI;YACJ,gCAAgC;YAChC,MAAM;YACN,WAAW;YACX,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SAC1B,EACD,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,OAAO,CACpC,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAoB,EAAW,EAAE,UAAU,GAAG,KAAK;IACnF,IAAI,UAAU,EAAE,CAAC;QACf,2DAA2D;QAC3D,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC;QACxG,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -35,6 +35,71 @@ export interface StartMediaProjectionRecordingOpts {
|
|
|
35
35
|
* invalid file name will fail to start the recording. */
|
|
36
36
|
filename?: string;
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Options for choosing the local TCP port used to bridge a live stream's
|
|
40
|
+
* on-device socket to the host via `adb forward`. At most one of these may be
|
|
41
|
+
* provided; if neither is given, an OS-assigned ephemeral port is used.
|
|
42
|
+
*/
|
|
43
|
+
export interface LocalPortOpts {
|
|
44
|
+
/** Use this exact local TCP port. Throws if it's already in use. */
|
|
45
|
+
localPort?: number;
|
|
46
|
+
/** Pick the first free local TCP port from this inclusive [min, max] range. */
|
|
47
|
+
localPortRange?: [number, number];
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Options for starting a live JPEG frame streaming session.
|
|
51
|
+
*/
|
|
52
|
+
export interface StartJpegStreamOpts extends LocalPortOpts {
|
|
53
|
+
/** Frames per second requested; actual rate may be lower on constrained devices. Default 60. */
|
|
54
|
+
fps?: number;
|
|
55
|
+
/** JPEG quality, 1-100. Default 80. */
|
|
56
|
+
quality?: number;
|
|
57
|
+
/** Percentage (1-100) to scale the captured frame to before JPEG encoding. Default 100. */
|
|
58
|
+
scale?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Options for starting a live H.264/HEVC video streaming session.
|
|
62
|
+
*/
|
|
63
|
+
export interface StartVideoStreamOpts extends LocalPortOpts {
|
|
64
|
+
/** Default 'h264'. */
|
|
65
|
+
codec?: 'h264' | 'hevc';
|
|
66
|
+
/** Default 30. */
|
|
67
|
+
fps?: number;
|
|
68
|
+
/** Default 4000000 (4 Mbps). */
|
|
69
|
+
bitrate?: number;
|
|
70
|
+
/** Same "WxH" syntax/allowed values as StartMediaProjectionRecordingOpts.resolution. */
|
|
71
|
+
resolution?: string;
|
|
72
|
+
/** Interleave an AAC audio track captured via AudioPlaybackCaptureConfiguration. Default false. */
|
|
73
|
+
audio?: boolean;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* A single JPEG-encoded frame of the device screen.
|
|
77
|
+
*/
|
|
78
|
+
export interface JpegFrame {
|
|
79
|
+
/** The raw JPEG-encoded image bytes. */
|
|
80
|
+
data: Buffer;
|
|
81
|
+
/** Monotonically increasing frame sequence number. */
|
|
82
|
+
sequence: number;
|
|
83
|
+
/** Frame timestamp, in microseconds since the stream session started. */
|
|
84
|
+
timestampMicros: number;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* A single encoded access unit from a live video stream: either a video NAL
|
|
88
|
+
* unit (Annex-B, H.264/HEVC) or an AAC audio unit (ADTS-framed).
|
|
89
|
+
*/
|
|
90
|
+
export interface AccessUnit {
|
|
91
|
+
track: 'video' | 'audio';
|
|
92
|
+
/** The raw access unit bytes. */
|
|
93
|
+
data: Buffer;
|
|
94
|
+
/** Monotonically increasing sequence number, per track. */
|
|
95
|
+
sequence: number;
|
|
96
|
+
/** Presentation timestamp, in microseconds since the stream session started. */
|
|
97
|
+
timestampMicros: number;
|
|
98
|
+
/** Whether this is a video keyframe (always false for audio units). */
|
|
99
|
+
isKeyFrame: boolean;
|
|
100
|
+
/** Whether this unit carries codec configuration data (e.g. SPS/PPS) rather than actual samples. */
|
|
101
|
+
isConfig: boolean;
|
|
102
|
+
}
|
|
38
103
|
/**
|
|
39
104
|
* Supported locale information.
|
|
40
105
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAClC,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,2GAA2G;IAC3G,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,+GAA+G;IAC/G,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACjC,2QAA2Q;IAC3Q,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD;;;sDAGkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;iCAC6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;uCAEmC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACrC;;6DAEyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ADB } from 'appium-adb';
|
|
2
|
+
import type { SettingsApp } from '../client.js';
|
|
3
|
+
import type { AccessUnit, StartVideoStreamOpts } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Creates a new instance of the live H.264/HEVC video streaming session.
|
|
6
|
+
* The stream only works since Android API 29+
|
|
7
|
+
*
|
|
8
|
+
* @returns The streaming session instance
|
|
9
|
+
*/
|
|
10
|
+
export declare function makeVideoStreamSession(this: SettingsApp): VideoStreamSession;
|
|
11
|
+
/**
|
|
12
|
+
* Live H.264/HEVC video streaming session for the device screen, with an
|
|
13
|
+
* optional interleaved AAC audio track.
|
|
14
|
+
*/
|
|
15
|
+
export declare class VideoStreamSession {
|
|
16
|
+
private readonly adb;
|
|
17
|
+
private transport;
|
|
18
|
+
/**
|
|
19
|
+
* Creates a new VideoStreamSession instance.
|
|
20
|
+
*
|
|
21
|
+
* @param adb - ADB instance for device communication
|
|
22
|
+
*/
|
|
23
|
+
constructor(adb: ADB);
|
|
24
|
+
/**
|
|
25
|
+
* Checks if the video stream is currently running.
|
|
26
|
+
*/
|
|
27
|
+
isRunning(): Promise<boolean>;
|
|
28
|
+
/**
|
|
29
|
+
* Starts the live video stream.
|
|
30
|
+
* If a stream is already running, this method returns false without starting a new one.
|
|
31
|
+
*
|
|
32
|
+
* @param opts Streaming options including codec, fps, bitrate, resolution, audio, and the local port to use
|
|
33
|
+
* @returns True if the stream was started successfully, false if already running
|
|
34
|
+
* @throws {Error} If the stream fails to start within the timeout period
|
|
35
|
+
*/
|
|
36
|
+
start(opts?: StartVideoStreamOpts): Promise<boolean>;
|
|
37
|
+
/**
|
|
38
|
+
* Yields access units (video NAL units and, if enabled, AAC audio units) as
|
|
39
|
+
* they arrive from the device. `start()` must be called before iterating.
|
|
40
|
+
*/
|
|
41
|
+
accessUnits(): AsyncGenerator<AccessUnit>;
|
|
42
|
+
/**
|
|
43
|
+
* Stops the currently running video stream.
|
|
44
|
+
*
|
|
45
|
+
* @returns True if the stream was stopped successfully, false if it was not running
|
|
46
|
+
* @throws {Error} If the stream fails to stop within the timeout period
|
|
47
|
+
*/
|
|
48
|
+
stop(): Promise<boolean>;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=video-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video-stream.d.ts","sourceRoot":"","sources":["../../../lib/commands/video-stream.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AAGpC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAS9C,OAAO,KAAK,EAAC,UAAU,EAAE,oBAAoB,EAAC,MAAM,YAAY,CAAC;AAKjE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,CAE5E;AAgBD;;;GAGG;AACH,qBAAa,kBAAkB;IAQjB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAPhC,OAAO,CAAC,SAAS,CAAgC;IAEjD;;;;OAIG;gBAC0B,GAAG,EAAE,GAAG;IAErC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;;;;;;OAOG;IACG,KAAK,CAAC,IAAI,GAAE,oBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsD9D;;;OAGG;IACI,WAAW,IAAI,cAAc,CAAC,UAAU,CAAC;IAgBhD;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;CAyB/B"}
|