问题
I am trying to implement a bug reporter on my website. My goal is that the user will be able to describe the problem audibly and record the browser tab while walking through the problem. The bug report will then just be a video file, which can be emailed to me.
It appears that the proposed navigator.mediaDevices.getDisplayMedia is exactly what I want, but it appears no browser has implemented it, nor have I found any plans for implementation on roadmaps.
Use of
var constraints = {video: {'mandatory' {'chromeMediaSource':'screen'}},
audio: true };
navigator.mediaDevices.getUserMedia(constraints)
did in fact work, but only after passing command line flags to Chrome on startup. I think essentially zero users will go through this hassle to do me a favor of submitting a bug report.
Are there any alternatives to achieving my goal?
回答1:
As you've noticed, Chrome and Firefox currently implement an outdated unofficial draft. The bug tracker for getDisplayMedia
in Firefox is here.
If it helps, you no longer need an extension in Firefox, but you do need to use https (so you must open this page in https first):
var constraints = {video: {mediaSource: "screen", width: 320, height: 200}};
navigator.mediaDevices.getUserMedia(constraints)
.then(stream => video.srcObject = stream)
.catch(e => console.log(e.message));
<video id="video" height="240" width="320" autoplay></video>
However, please be aware of unique security risks of sharing your screen with a browser window on it.
回答2:
You have to develop an extension (at least on chrome) using https://developer.chrome.com/extensions/desktopCapture APIs. As this poses a security concern, its not available without an extension. There is a talk to add this in next version of webrtc spec (https://w3c.github.io/mediacapture-screen-share/). You may want to keep an eye on it and track the progress.
回答3:
There are older versions of the API currently implemented. See this module which includes example extensions for Chrome and Firefox (note: Firefox will soon no longer require an extension for whitelisting)
回答4:
getDisplayMedia()
has now been rolled out in Edge 17 and 18 and it is under a flag in Chrome 70
The code required to capture the screen is as follows:
navigator.getDisplayMedia({ video: true }).then(stream => {
console.log("Awesome");
}, error => {
console.log("Unable to acquire screen capture", error);
});
Chrome will ask whether you want to share your screen, an app window or a Chrome tab:
来源:https://stackoverflow.com/questions/41881434/bug-reporter-alternatives-to-getdisplaymedia