javascript - 在nodejs中使用ffmpeg上传时,edge和firefox中的sharedarraybuffer错误但在chrome中没有
问题描述
我在 React.js 中有以下代码,它使用 ffmpeg 转换文件:
import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg';
const doTranscode = async () => {
setMessage('Loading ffmpeg-core.js');
await ffmpeg.load();
setMessage('Uploading file');
ffmpeg.FS('writeFile', filename, await fetchFile(file));
await ffmpeg.run('-i', filename, 'test.wav');
setMessage('Upload to manager complete. Sound file will be available and playable on the manger within 1-2 minutes.');
const data = ffmpeg.FS('readFile', 'test.wav');
setAudioSrc(URL.createObjectURL(new Blob([data.buffer], { type: 'audio/wav' })));
var file_name = prompt('What would you like to call this file?');
if (!file_name) {
file_name = Date.now()
}
(async function(){
let output = await getSoundID(customer_id, file_name);
let sound_id = output.data;
var bucket_file = new File([new Blob([data.buffer], { type: 'audio/wav' })], "sounds/" + customer_id + "/" + sound_id + ".wav");
uploadFileToS3(bucket_file);
updateSoundData(sound_id, customer_id);
})();
};
useEffect(() => {
if (file) {
doTranscode()
}
}, [file])
上面的代码在 Chrome 中运行良好,文件已成功转换。但是,当我将它带到 Firefox 或 Edge 时,我会收到此错误Unhandled Rejection (ReferenceError): SharedArrayBuffer is not defined
。
我查找了这个问题,他们说我需要修改我的标题以包含以下内容:
You need to set two response headers for your document:
Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy: require-corp
不知道我会如何在我的 JS 代码中这样做?
很想听听你们的想法。
解决方案
推荐阅读
- java - Windows 10 上的 JComboBox 类中的方法 contentsChanged 缓慢
- javascript - 为什么会突然 req.body 为空?
- php - MySQL 中的表未显示在网站上。查询返回 0 行
- c - 如何修改指针数组中的字符串?
- typescript - 为 NestJs REST API 创建 DTO、BO 和 DAO
- python - 使用计划函数变量
- php - 如何从此字符串中获取名称和图像文件?
- php - 在拉拉维尔。如何加密用户表中的电子邮件地址
- mysql - 如果存在,则在 linux 中使用 mysqladmin 删除数据库
- java - trying to understand the different ways of declaring an array