@ fix-webm- 期限/ 固定
navigator.mediaDevices.getUserMedia + 键 MediaRecorder 创建 WEBM 文件,不包含持续时间元数据.
此库在文件 blob 中右侧附加缺失的元数据段 .
安装
从软件包管理器安装 :
npm install @fix-webm-duration/fix
然后,图书馆可以被导入:
import { fixWebmDuration } from "@fix-webm-duration/fix";
使用量
语法
const newBlob = await fixWebmDuration(blob, duration, options = {});
地点
blob实值Blob文件内容来自MediaRecorderduration是视频持续时间以毫秒为单位(您在录制视频时应当计算)options是选项的对象 :options.logger- 记录调试消息的调试回话或false。 。 。 . 调用符应该接受一个参数 - 消息字符串 . 默认,console.debug用于伐木. 通过false将禁用日志.
fixWebmDuration 将同步解析和修复您的文件,并在结果完成后返回固定的blob.
如果原始blob已经包含持续时间元数据段,且持续时间值不是空的,则回调会收到它而不做任何修改.
示例
let mediaRecorder;
let mediaParts;
let startTime;
function startRecording(stream: MediaStream, options: MediaRecorderOptions) {
mediaParts = [];
mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.onstop = async () => {
const duration = Date.now() - startTime;
const buggyBlob = new Blob(mediaParts, { type: "video/webm" });
const fixedBlob = await fixWebmDuration(buggyBlob, duration)
displayResult(fixedBlob);
};
mediaRecorder.ondataavailable = (event) => {
var data = event.data;
if (data && data.size > 0) {
mediaParts.push(data);
}
};
mediaRecorder.start();
startTime = Date.now();
}
function stopRecording() {
mediaRecorder.stop();
}
function displayResult(blob: Blob) {
// ...
}
注:本实例 没有 (单位:千美元) MediaRecorder 使用指南.