Better device picker
This commit is contained in:
parent
5fee511315
commit
a37faec700
23
record.ts
23
record.ts
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env -S ts-node-esm --compilerOptions='{"module": "es2022"}'
|
#!/usr/bin/env -S ts-node-esm --compilerOptions='{"module": "es2022"}'
|
||||||
|
|
||||||
$.verbose = false;
|
$.verbose = true;
|
||||||
|
|
||||||
import { $ } from "zx";
|
import { $ } from "zx";
|
||||||
// Or
|
// Or
|
||||||
@ -15,10 +15,23 @@ function sleep(time: number) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void (async function () {
|
void (async function () {
|
||||||
const pick_device =
|
const device_ids = (await $`ls -1 /dev/video*`).stdout
|
||||||
await $`ls -1 /dev/video* | xargs -I {} bash -c "v4l2-ctl --device {} --info | grep --extended-regexp \\"(Model|Card type)\\" | awk -F: '{print \\$2}' | awk '{print \"{}\" \",\" \\$0}' | tr , '\n'" | zenity --list --column=device --column=name`;
|
.split("\n")
|
||||||
|
.slice(0, -1);
|
||||||
const dev = `/dev/video${pick_device.stdout.split(" ")[0]}`;
|
const device_names = await Promise.all(
|
||||||
|
device_ids.map(async (device_id) => {
|
||||||
|
return (
|
||||||
|
await $`v4l2-ctl --device ${device_id} --info | grep --extended-regexp "(Model|Card type)" | head -n 1 | cut -d: -f2`
|
||||||
|
).stdout.replace("\n", "");
|
||||||
|
})
|
||||||
|
);
|
||||||
|
let zenity_args = "";
|
||||||
|
for (let i in device_ids) {
|
||||||
|
zenity_args += device_ids[i] + "\n" + device_names[i] + "\n";
|
||||||
|
}
|
||||||
|
const dev = (
|
||||||
|
await $`echo ${zenity_args} | zenity --list --column=device --column=name`
|
||||||
|
).stdout.replace("\n", "");
|
||||||
|
|
||||||
const source = spawn("ffmpeg", [
|
const source = spawn("ffmpeg", [
|
||||||
"-f",
|
"-f",
|
||||||
|
Loading…
Reference in New Issue
Block a user