<script setup> import { ref } from 'vue'; const stream = ref(null); const startCapture = async () => { console.log("startCapture!"); try { stream.value = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: false, }); dumpOptionsInfo(); } catch (err) { console.error(err); } return stream; } const stopCapture = () => { console.log('stopCapture'); const tracks = stream.value.getTracks(
![[Vue3]Composition APIで画面キャプチャ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/d84d1d0567166ac8b43f58e18a728f79f9d8a464/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9JTVCVnVlMyU1RENvbXBvc2l0aW9uJTIwQVBJJUUzJTgxJUE3JUU3JTk0JUJCJUU5JTlEJUEyJUUzJTgyJUFEJUUzJTgzJUEzJUUzJTgzJTk3JUUzJTgzJTgxJUUzJTgzJUEzJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lZDE5MmU2NDU3MmFjZmVlYWQzZTliOTI0ODJjNDFiMA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa3NfamFnYSZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9MzFjODQwYmMxYTVhYzQ4ZTlmNmFlODc4NTRjYzM1ZGQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D786b7a6e623e109835beb27e6994e4a2)