@@ -13,7 +13,7 @@ export default class Hello extends Vue {
13
13
photo : string = null ;
14
14
screenshotFormat : string = "image/jpeg" ;
15
15
16
- private _refs : { [ key : string ] : Vue | Element | Vue [ ] | Element [ ] } = null ;
16
+ private _refs : any = null ;
17
17
private _video : HTMLVideoElement = null ;
18
18
private _stream : MediaStream = null ;
19
19
private _hasUserMedia : boolean = false ;
@@ -31,7 +31,7 @@ export default class Hello extends Vue {
31
31
this . photo = canvas . toDataURL ( this . screenshotFormat ) ;
32
32
}
33
33
34
- getCanvas ( ) : HTMLCanvasElement {
34
+ private getCanvas ( ) : HTMLCanvasElement {
35
35
if ( ! this . _hasUserMedia ) {
36
36
return null ;
37
37
}
@@ -51,24 +51,29 @@ export default class Hello extends Vue {
51
51
return null ;
52
52
}
53
53
54
+ private getMediaDevices ( ) : MediaDevices {
55
+ var md : MediaDevices = navigator . mediaDevices ;
56
+ if ( md != null ) {
57
+ return md ;
58
+ }
59
+
60
+ md = new MediaDevices ( ) ;
61
+ return md ;
62
+ }
63
+
54
64
mounted ( ) : void {
55
- this . _refs = this . $refs ;
56
- this . _video = < HTMLVideoElement > this . _refs [ "video" ] ;
57
-
58
- var n : any = < any > navigator ;
59
- n . getUserMedia = n . getUserMedia || n . webkitGetUserMedia || n . mozGetUserMedia || n . msGetUserMedia || n . oGetUserMedia ;
60
-
61
- if ( n . getUserMedia ) {
62
- n . getUserMedia ( { video : true } ,
63
- ( stream ) => {
64
- this . src = window . URL . createObjectURL ( stream ) ;
65
- this . _stream = stream ;
66
- this . _hasUserMedia = true ;
67
- } ,
68
- ( error ) => {
69
- console . log ( error ) ;
65
+ this . _refs = < any > this . $refs ;
66
+ this . _video = < HTMLVideoElement > this . _refs . video ;
67
+
68
+ var md : MediaDevices = this . getMediaDevices ( ) ;
69
+ md . getUserMedia ( { video : true } )
70
+ . then ( ( stream ) => {
71
+ this . src = window . URL . createObjectURL ( stream ) ;
72
+ this . _stream = stream ;
73
+ this . _hasUserMedia = true ;
74
+ } , ( err ) => {
75
+ console . log ( err ) ;
70
76
} ) ;
71
- }
72
77
}
73
78
74
79
created ( ) : void {
@@ -82,7 +87,7 @@ export default class Hello extends Vue {
82
87
83
88
beforeDestroy ( ) : void {
84
89
this . _video . pause ( ) ;
85
- this . src = "" ;
90
+ this . src = null ;
86
91
this . _stream . getTracks ( ) [ 0 ] . stop ( ) ;
87
92
}
88
93
0 commit comments