javascript - 将视频 Blob URL 转换为视频 mp4 文件

标签 javascript reactjs webrtc blob mediarecorder

我正在尝试将使用 Media Recorder 录制视频后获得的 mediaBlobUrl 转换为 mp4 文件,

const {
        status,
        startRecording,
        stopRecording,
        mediaBlobUrl,
    } = useReactMediaRecorder({ video: true });

const myFile = new File([mediaBlobUrl], "demo.mp4", { type: 'video/mp4' });

但是注销文件后,我总是得到文件大小为 64 字节,但它不起作用。

注意:但是,如果我像这样使用 blob url 下载文件,

<a href={mediaBlobUrl} download="myFile">Download file</a>

然后上传文件并检查其大小,一切正常。

还有其他方法可以将 blob Url 转换为 mp4 视频文件吗?

最佳答案

react-media-recorder 提供的 mediaBlobUrl 是一个对象 URL,而不是 Blob。这就是转换为 File 失败的原因。

有一个onstop函数允许您直接访问Blob。但您也可以将对象 URL 转换回 Blob,如 here 中所述。 .

const mediaBlob = await fetch(mediaBlobUrl)
    .then(response => response.blob());

const myFile = new File(
    [mediaBlob],
    "demo.mp4",
    { type: 'video/mp4' }
);

请注意,只有当 MediaRecorder 实际配置为录制 mp4 时,这才会生成有效文件。

关于javascript - 将视频 Blob URL 转换为视频 mp4 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69567276/

相关文章:

ios - 连接到 janus 服务器总是挂起,并显示来自 janus 的挂断消息

javascript - 如何删除具有特定子项的 jQuery 中的元素?

javascript - 如何在 AngularJS 中处理来自 REST Api 的日期字段?

reactjs - 使用react-router-dom时如何避免 'Function components cannot be given refs'?

javascript - 使用 Material UI 和 React.js 正确显示 Stepper

c++ - 为什么 webrtc 找不到它建议的捕获器?

javascript - 如何保持 1 :1 aspect ratio video all the time in WebRTC

javascript - 如何在具有多个嵌套元素的 div 上伪造省略号?

javascript - 从浏览器调用电话时,如何以编程方式知道电话何时被接听?

javascript - 如何在基于类的组件中的函数内部抛出 react 警报