首页 > 解决方案 > 在 Chrome 扩展程序中使用 ffmpeg.wasm 时出现意外异常

问题描述

我正在尝试实现一个 chrome 扩展,它允许我通过将flv视频转码为mp4来播放flv视频,然后插入一个视频播放器,就像在ffmpeg.wasm的转码示例中所做的那样。

由于 chrome 扩展不支持下载代码的执行,我需要使用 ffmpeg-core 的下载版本。我已经下载了 0.8.4 版本,并将该文件夹包含在清单中的web_accessible_resources下,因此用于转码的 javascript 文件中的代码是:

const { createFFmpeg, fetchFile } = FFmpeg;
const ffmpeg = createFFmpeg({
  log: true,
  corePath: chrome.runtime.getURL('ffmpeg-core/ffmpeg-core.js'),
});

const transcode = async (file) => {
  const { name } = file;
  console.log('Loading ffmpeg-core.js. Transcode URL.');
  await ffmpeg.load();
  console.log('ffmpeg-core loaded.');

  let blob = await fetch(file).then(r => r.blob());
  console.log('blob downloaded');

  ffmpeg.FS('writeFile', name, blob);
  console.log('Start transcoding');
  await ffmpeg.run('-i', name,  'output.mp4');
  console.log('Complete transcoding');
  const data = ffmpeg.FS('readFile', 'output.mp4');

  const video = document.getElementById('output-video');
  video.src = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4' }));
}

执行转码功能后,出现以下异常:

ffmpeg.min.js:1 Uncaught (in promise) TypeError: t is not a function
    at ffmpeg.min.js:1
    at f (ffmpeg.min.js:1)
    at Generator._invoke (ffmpeg.min.js:1)
    at Generator.next (ffmpeg.min.js:1)
    at i (ffmpeg.min.js:1)
    at c (ffmpeg.min.js:1)

有人知道为什么会发生这种情况吗?

非常感谢!

标签: javascriptvideogoogle-chrome-extensionffmpegwebassembly

解决方案


推荐阅读