Recebo o seguinte erro ao tentar getCameras () no Chrome / android
Estou usando um localhost sem https.
Uncaught (in promise) {name: "NotReadableError", message: "Could not start video source", constraint: undefined, toString: ƒ}constraint: undefinedmessage: "Could not start video source"name: "NotReadableError"toString: ƒ ()__proto__: constructor: ƒ Object()hasOwnProperty: ƒ hasOwnProperty()isPrototypeOf: ƒ isPrototypeOf()propertyIsEnumerable: ƒ propertyIsEnumerable()toLocaleString: ƒ toLocaleString()toString: ƒ toString()valueOf: ƒ valueOf()__defineGetter__: ƒ __defineGetter__()__defineSetter__: ƒ __defineSetter__()__lookupGetter__: ƒ __lookupGetter__()__lookupSetter__: ƒ __lookupSetter__()get __proto__: ƒ __proto__()set __proto__: ƒ __proto__()
step @ instascan.js:44
(anonymous) @ instascan.js:54
Promise.then (async)
step @ instascan.js:51
(anonymous) @ instascan.js:59
F @ instascan.js:416
(anonymous) @ instascan.js:38
start @ instascan.js:23709
getCameras @ QRScan.vue?54e3:51
Promise.then (async)
mounted @ QRScan.vue?54e3:68
callHook @ vue.esm.js?65d7:2921
insert @ vue.esm.js?65d7:4158
invokeInsertHook @ vue.esm.js?65d7:5960
patch @ vue.esm.js?65d7:6179
Vue._update @ vue.esm.js?65d7:2670
updateComponent @ vue.esm.js?65d7:2788
get @ vue.esm.js?65d7:3142
run @ vue.esm.js?65d7:3219
flushSchedulerQueue @ vue.esm.js?65d7:2981
(anonymous) @ vue.esm.js?65d7:1837
flushCallbacks @ vue.esm.js?65d7:1758
Eu adicionei um certificado autoassinado, então ele está usando https: // localhost : 8443, mas isso não corrigiu o problema.
Este é um problema apenas no Android 7.
Estou tendo o mesmo problema no Android versão 4.1.2. A câmera frontal não é problema, a câmera traseira me dá o mesmo erro.
Estou tendo o mesmo problema em todos os navegadores que testei.
Vocês encontraram alguma solução, pessoal?
Tive um erro semelhante no meu projeto (não relacionado ao instascan) no Chrome Android.
O erro aconteceu quando tentei trocar de câmeras.
A solução para mim foi interromper todas as faixas em um stream ativo antes de adquirir um novo
if(this.lastStream) {
this.lastStream.getTracks().forEach(track => track.stop())
}
depois disso o erro foi embora
Tive um erro semelhante no meu projeto (não relacionado ao instascan) no Chrome Android.
O erro aconteceu quando tentei trocar de câmeras.
A solução para mim foi interromper todas as faixas em um stream ativo antes de adquirir um novoif(this.lastStream) { this.lastStream.getTracks().forEach(track => track.stop()) }
depois disso o erro foi embora
Para aqueles que estão se perguntando onde param as trilhas, é antes de navigator.mediaDevices.getUserMedia
.
Obrigado @Kukunin.
Comentários muito úteis
Tive um erro semelhante no meu projeto (não relacionado ao instascan) no Chrome Android.
O erro aconteceu quando tentei trocar de câmeras.
A solução para mim foi interromper todas as faixas em um stream ativo antes de adquirir um novo
depois disso o erro foi embora