@@ -46,8 +46,13 @@ function isMobileSafari() {
46
46
return / i P ( a d | h o n e | o d ) .+ V e r s i o n \/ [ \d . ] + .* S a f a r i / i. test ( ua ) ;
47
47
}
48
48
49
+ window . addEventListener ( "error" , function ( event ) {
50
+ console . error ( "Error occurred: " , event . message ) ;
51
+ message . error ( `Error occurred: ${ event . message } ` ) ;
52
+ } ) ;
53
+
54
+
49
55
$ ( ( ) => {
50
- console . log ( 'update video attr 12343' ) ;
51
56
if ( isMobileSafari ( ) ) {
52
57
$ ( '#sample-video' ) . attr ( 'playsinline' , 'true' ) ;
53
58
$ ( '#sample-video' ) . attr ( 'webkit-playsinline' , 'true' ) ;
@@ -60,6 +65,7 @@ $(() => {
60
65
*/
61
66
$ ( "#join" ) . click ( async function ( e ) {
62
67
e . preventDefault ( ) ;
68
+ $ ( '#retry-play-alert' ) . modal ( 'show' ) ;
63
69
$ ( "#join" ) . attr ( "disabled" , true ) ;
64
70
try {
65
71
currentStream = $ ( "#stream-source" ) . val ( ) ;
@@ -69,7 +75,11 @@ $("#join").click(async function (e) {
69
75
// 移动端的safari浏览器需要用户的click事件手动触发视频播放
70
76
if ( currentStream !== "camera" && isMobileSafari ( ) ) {
71
77
try {
72
- videoFromDiv . play ( ) ;
78
+ videoFromDiv . play ( ) . catch ( error => {
79
+ console . error ( error ) ;
80
+ $ ( '#retry-play-alert' ) . removeClass ( "hidden" ) ;
81
+ $ ( '#retry-play-alert' ) . modal ( 'show' ) ;
82
+ } ) ;
73
83
} catch ( error ) {
74
84
console . error ( error ) ;
75
85
message . error ( error . message ) ;
@@ -137,7 +147,6 @@ const getCaptureStream = () => {
137
147
let stream ;
138
148
const isFirefox = navigator . userAgent . indexOf ( "Firefox" ) > - 1 ;
139
149
const isSafari = / ^ ( (? ! c h r o m e | a n d r o i d ) .) * s a f a r i / i. test ( navigator . userAgent ) ;
140
- debugger ;
141
150
console . log ( 'isFirefox' , isFirefox ) ;
142
151
if ( isFirefox ) {
143
152
stream = videoFromDiv . mozCaptureStream ( ) ;
@@ -163,6 +172,20 @@ const getCaptureStream = () => {
163
172
return null ;
164
173
}
165
174
175
+
176
+ $ ( '#retry-play' ) . click ( ( ) => {
177
+ videoFromDiv . play ( ) . catch ( error => {
178
+ if ( error . name === 'NotAllowedError' ) {
179
+ console . error ( 'NotAllowedError: ' , error ) ;
180
+ message . error ( error . message ) ;
181
+ } else {
182
+ console . error ( error ) ;
183
+ message . error ( error . message ) ;
184
+ }
185
+ } ) ;
186
+ } )
187
+
188
+
166
189
async function createAndPublishVideoTrack ( ) {
167
190
168
191
if ( currentStream == "camera" ) {
@@ -172,7 +195,11 @@ async function createAndPublishVideoTrack(){
172
195
// https://developers.google.com/web/updates/2016/10/capture-stream - captureStream()
173
196
// can only be called after the video element is able to play video;
174
197
try {
175
- videoFromDiv . play ( ) ;
198
+ videoFromDiv . play ( ) . catch ( error => {
199
+ console . error ( error ) ;
200
+ $ ( '#retry-play-alert' ) . removeClass ( "hidden" ) ;
201
+ $ ( '#retry-play-alert' ) . modal ( 'show' ) ;
202
+ } ) ;
176
203
} catch ( error ) {
177
204
console . error ( error ) ;
178
205
message . error ( error . message ) ;
0 commit comments