Skip to content

Commit ffb5efd

Browse files
committed
fix: video having no duration (see muaz-khan/RecordRTC#147)
N.B.: adds ts-ebml dependency (from a fork as the corresponding PR is not merged yet: legokichi/ts-ebml#38)
1 parent 361a2d0 commit ffb5efd

3 files changed

Lines changed: 293 additions & 37 deletions

File tree

packages/client/logic/recording.ts

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { getSeekableBlob } from 'recordrtc'
12
import type { Ref } from 'vue'
23
import { nextTick, ref, shallowRef, watch } from 'vue'
34
import { useDevicesList, useEventListener } from '@vueuse/core'
@@ -6,6 +7,8 @@ import type RecorderType from 'recordrtc'
67
import type { Options as RecorderOptions } from 'recordrtc'
78
import { currentCamera, currentMic } from '../state'
89

10+
import 'ts-ebml/lib/ts-ebml.export.min.js'
11+
912
export const recordingName = ref('')
1013
export 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

packages/client/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"prettier": "^2.5.1",
3131
"recordrtc": "^5.6.2",
3232
"resolve": "^1.22.0",
33+
"ts-ebml": "guest271314/ts-ebml#guest271314-patch-1",
3334
"vite-plugin-windicss": "^1.7.0",
3435
"vue": "^3.2.30",
3536
"vue-router": "^4.0.12",

0 commit comments

Comments
 (0)