如何从字节数组创建示例 webm 文件

sub*_*754 5 javascript websocket webrtc get-display-media

我正在开发一个屏幕捕获应用程序,并且能够使ondataavailable事件工作并以块的形式获取数据,我将其进一步转换为 blob,但是当我通过 websocket 将相同的数据流发送到服务器并将该流另存为 webm 文件时磁盘然后播放文件,该文件不播放任何内容。我认为该文件需要一些我不确定的元信息。

有什么建议?

这是我的 javascript 代码:

socket.emit('message', new Blob([event.data], {type: 'video/webm'}));

服务器保存代码:

fs.writeFile("d://test.webm", data, "binary", function(err) { });

jib*_*jib 3

dataavailable事件返回一个\xe2\x80\x94a 录音片段 \xe2\x80\x94 并触发多次。一个事件不可能包含整个录音。

\n\n

将多个事件的数据合并到一个chunks数组中,然后在停止记录后,将整个数组合并到一个新的数组中Blob. 这会生成一个适合我的文件:

\n\n
const rec = new MediaRecorder(stream), chunks = [];\nrec.ondataavailable = e => chunks.push(e.data);\nrec.start();\nawait new Promise(r => setTimeout(r, 10000)); // wait 10 seconds\nrec.stop();\nawait new Promise(r => rec.onstop = r);\nconst blob = new Blob(chunks);\nlink.href = URL.createObjectURL(blob);\n
Run Code Online (Sandbox Code Playgroud)\n\n

工作演示: https://jsfiddle.net/jib1/pkc16k9r/

\n