如何解决在 nodejs
我在 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','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 代码中如何处理?
很想听听你们的想法。
解决方法
看起来根据the docs @ffmpeg/ffmpeg
库只支持具有 SharedArrayBuffer 的浏览器:
只有支持 SharedArrayBuffer 的浏览器才能使用 ffmpeg.wasm,您可以查看 HERE 以获取完整列表。
以上列表包含从 79 版开始的 Edge 和从 79 版开始的 Firefox。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。