@@ -27,12 +27,25 @@ export class GleapScreenRecorder {
27
27
}
28
28
29
29
getSupportedMimeType ( ) {
30
- if ( MediaRecorder . isTypeSupported ( "video/mp4" ) ) {
31
- return "video/mp4" ;
32
- }
33
- if ( MediaRecorder . isTypeSupported ( "video/webm;codecs=h264" ) ) {
34
- return "video/webm;codecs=h264" ;
30
+ // List of MIME types in order of preference
31
+ const types = [
32
+ "video/webm" ,
33
+ "audio/webm" ,
34
+ "video/webm;codecs=vp8" ,
35
+ "video/webm;codecs=daala" ,
36
+ "video/webm;codecs=h264" ,
37
+ "audio/webm;codecs=opus" ,
38
+ "video/mp4" ,
39
+ ] ;
40
+
41
+ // Iterate through the list and return the first supported type
42
+ for ( const type of types ) {
43
+ if ( MediaRecorder . isTypeSupported ( type ) ) {
44
+ return type ;
45
+ }
35
46
}
47
+
48
+ // If no types are supported, return a default or handle as needed
36
49
return "video/webm" ;
37
50
}
38
51
@@ -64,7 +77,7 @@ export class GleapScreenRecorder {
64
77
displaySurface : "monitor" ,
65
78
} ,
66
79
selfBrowserSurface : "include" ,
67
- audio : true
80
+ audio : true ,
68
81
} )
69
82
. then ( function ( displayStream ) {
70
83
self . stream = displayStream ;
@@ -184,7 +197,7 @@ export class GleapScreenRecorder {
184
197
185
198
var recordedChunks = [ ] ;
186
199
this . mediaRecorder = new MediaRecorder ( stream , {
187
- mimeType : this . getSupportedMimeType ( )
200
+ mimeType : this . getSupportedMimeType ( ) ,
188
201
} ) ;
189
202
this . isRecording = true ;
190
203
this . recordTime = 0 ;
@@ -226,8 +239,10 @@ export class GleapScreenRecorder {
226
239
type : this . getSupportedMimeType ( ) ,
227
240
} ) ;
228
241
229
- this . file = new File ( [ completeBlob ] , `screen-recording.${ this . getSupportedMimeType ( ) === "video/mp4" ? 'mp4' : "webm" } ` , {
230
- type : this . getSupportedMimeType ( ) ,
242
+ const mimeType = this . getSupportedMimeType ( ) ;
243
+ const extension = mimeType . includes ( "mp4" ) ? "mp4" : "webm" ;
244
+ this . file = new File ( [ completeBlob ] , `screen-recording.${ extension } ` , {
245
+ type : mimeType ,
231
246
} ) ;
232
247
233
248
const previewVideoElement = document . querySelector (
0 commit comments