1+ import { getSeekableBlob } from 'recordrtc'
12import type { Ref } from 'vue'
23import { nextTick , ref , shallowRef , watch } from 'vue'
34import { useDevicesList , useEventListener } from '@vueuse/core'
@@ -6,6 +7,8 @@ import type RecorderType from 'recordrtc'
67import type { Options as RecorderOptions } from 'recordrtc'
78import { currentCamera , currentMic } from '../state'
89
10+ import 'ts-ebml/lib/ts-ebml.export.min.js'
11+
912export const recordingName = ref ( '' )
1013export const recordCamera = ref ( true )
1114
@@ -155,22 +158,24 @@ export function useRecording() {
155158 recording . value = false
156159 recorderCamera . value ?. stopRecording ( ( ) => {
157160 if ( recordCamera . value ) {
158- const blob = recorderCamera . value ! . getBlob ( )
159- const url = URL . createObjectURL ( blob )
160- download ( getFilename ( 'camera' ) , url )
161- window . URL . revokeObjectURL ( url )
161+ getSeekableBlob ( recorderCamera . value ! . getBlob ( ) , ( seekableBLob ) => {
162+ const url = URL . createObjectURL ( seekableBLob )
163+ download ( getFilename ( 'camera' ) , url )
164+ window . URL . revokeObjectURL ( url )
165+ } )
162166 }
163167 recorderCamera . value = undefined
164168 if ( ! showAvatar . value )
165169 closeStream ( streamCamera )
166170 } )
167171 recorderSlides . value ?. stopRecording ( ( ) => {
168- const blob = recorderSlides . value ! . getBlob ( )
169- const url = URL . createObjectURL ( blob )
170- download ( getFilename ( 'screen' ) , url )
171- window . URL . revokeObjectURL ( url )
172- closeStream ( streamSlides )
173- recorderSlides . value = undefined
172+ getSeekableBlob ( recorderSlides . value ! . getBlob ( ) , ( seekableBLob ) => {
173+ const url = URL . createObjectURL ( seekableBLob )
174+ download ( getFilename ( 'screen' ) , url )
175+ window . URL . revokeObjectURL ( url )
176+ closeStream ( streamSlides )
177+ recorderSlides . value = undefined
178+ } )
174179 } )
175180 }
176181
0 commit comments