55 lines
1.3 KiB
TypeScript
55 lines
1.3 KiB
TypeScript
/**
|
|
* webrtc page script
|
|
*
|
|
* Author: Peter Harpending <peterharpending@qpq.swiss>
|
|
* Date: 2026-02-04
|
|
* Copyright: Copyright (c) 2026 QPQ AG
|
|
*
|
|
* Reference: https://git.qpq.swiss/QPQ-AG/research-megadoc/src/commit/c7c4592d4b21ad120145ef63334471a1a7ec1e60/paste/2026-02/grok-webrtc.html
|
|
*
|
|
* @module
|
|
*/
|
|
|
|
main();
|
|
|
|
async function
|
|
main
|
|
()
|
|
: Promise<void>
|
|
{
|
|
console.log('peepy');
|
|
let video : MediaStream = await getUserCamera();
|
|
console.log('poopy');
|
|
console.log('poopu');
|
|
let moi = document.getElementById('me') as HTMLVideoElement;
|
|
moi.srcObject = video;
|
|
console.log('poopa');
|
|
}
|
|
|
|
|
|
/**
|
|
* Try to get the user's camera
|
|
*
|
|
* tries to get screenshare if user camera not available for whatever reason
|
|
*
|
|
* chimps out if
|
|
* - not on https
|
|
* - user says no
|
|
*/
|
|
async function
|
|
getUserCamera
|
|
()
|
|
: Promise<MediaStream>
|
|
{
|
|
if (!(navigator.mediaDevices)) {
|
|
console.error('navigator.mediaDevices is null; user not on https or something');
|
|
}
|
|
|
|
let availableDevices: Array<MediaDeviceInfo> =
|
|
await navigator.mediaDevices.enumerateDevices();
|
|
console.log(availableDevices);
|
|
|
|
return await navigator.mediaDevices.getUserMedia({video: true, audio: false});
|
|
// return await navigator.mediaDevices.getDisplayMedia();
|
|
}
|