小程序
小游戏
企业微信
微信支付
扫描小程序码分享
测试环境为Iphone12 mini, IOS16.1, 微信版本8.0.37
如题,在web-view的页面中,开启navigator.mediaDevices.getUserMedia获取摄像头画面,如果这时打开手机的控制面板或切应用再回到该页面,视频流会停止,表现为画面卡住,而且视频流的track也没有触发end事件,目前只能通过点击按钮后再次执行启动操作。但是在微信内置的浏览器并未出现这种情况,想问下是小程序针对web-view访问webrtc做了某些限制?
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
你好,麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
let mediaStream = null;
video.style.position = 'absolute'
video.style.top = '0px'
video.style.left = '0px'
video.style.zIndex = '-2'
container.appendChild(video);
}
const connect = () => {
if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
return;
navigator.mediaDevices.getUserMedia({
audio: false, video: {
facingMode: 'environment',
}).then((stream) => {
video.addEventListener('loadedmetadata', () => {
video.setAttribute('width', video.videoWidth);
video.setAttribute('height', video.videoHeight);
});
mediaStream = stream;
mediaStream.getTracks().forEach(track => {
track.onended = () => {
console.warn('MediaStreamTrack has ended');
reconnect();
};
video.srcObject = stream;
}).catch((err) => {
console.log("getUserMedia error", err);
const startVideo = () => {
console.log(video)
if (!video) {
createVideo();
console.log(video);
connect();
start.addEventListener('click', () => {
startVideo()
请问有进展了吗?
请问后面结果怎样了呢
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
你好,麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)
let mediaStream = null;
video.style.position = 'absolute'
video.style.top = '0px'
video.style.left = '0px'
video.style.zIndex = '-2'
container.appendChild(video);
}
const connect = () => {
if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
return;
}
navigator.mediaDevices.getUserMedia({
audio: false, video: {
facingMode: 'environment',
}
}).then((stream) => {
video.addEventListener('loadedmetadata', () => {
video.setAttribute('width', video.videoWidth);
video.setAttribute('height', video.videoHeight);
});
mediaStream = stream;
mediaStream.getTracks().forEach(track => {
track.onended = () => {
console.warn('MediaStreamTrack has ended');
reconnect();
};
});
video.srcObject = stream;
}).catch((err) => {
console.log("getUserMedia error", err);
});
}
const startVideo = () => {
console.log(video)
if (!video) {
createVideo();
}
console.log(video);
connect();
}
start.addEventListener('click', () => {
startVideo()
});
具体的表现如下图,整个视频流卡住了
请问有进展了吗?
请问后面结果怎样了呢