使用@mmfpeg React 连接多个视频时出现 "memory access out of bounds" 错误

Getting a "memory access out of bounds" error while concatenating multiple videos with @mmfpeg React

我正在尝试使用@ffmpeg 将多个视频与 React 连接起来。我尝试从视频创建一个 GIF,它工作正常,但我在视频连接方面运气不佳。我收到“内存访问越界”错误。不知道这里会出什么问题。 任何帮助将不胜感激。

const mergeVideos = async () => {

let myFile = ''

for (let i = 0; i < video.length; i++) {
  myFile += `file ${ await fetchFile(video[i]) }`

}
ffmpeg.FS('writeFile', 'MyList.txt', myFile);

await ffmpeg.run('-f','concat', '-safe',0, '-i', 'MyList.txt', '-codec','-c',  'output.mp4');

// Read the result
 data = ffmpeg.FS('readFile', 'output.mp4');

// Create a URL
const url = URL.createObjectURL(new Blob([data.buffer], { type: 'video/mp4'}));

setMergedVideos(url)

}

尝试将此参数 -max_muxing_queue_size 9999 添加到 ffmpeg:

ffmpeg -y -max_muxing_queue_size 9999 -f concat -i "join.txt" -c:v h264_nvenc -pix_fmt yuv420p -b:v 10M -preset slow "Joinned.mp4"

在花了无数个小时之后,我终于找到了我的错误。我正在将从 fetchFile 返回的 uInt8Array 写入错误的 txt 文件,并导致内存绑定错误。正确的做法是将uInt8Array写入内存,并将文件名写入txt文件。

 const mergeVideos = async () => {
let myFile = '';
for (const f of video) {
  const { name } = f;

  await ffmpeg.FS('writeFile', name, await fetchFile(f));
  myFile += `file ${name} \n`;
}
// Write the file to memory
await ffmpeg.FS('writeFile', 'MyList.txt', myFile);

await ffmpeg.run(
  '-f',
  'concat',
  '-safe',
  0,
  '-i',
  'MyList.txt',
  '-c',
  'copy',
  'output.mp4',
);
// // Read the result
let data = await ffmpeg.FS('readFile', 'output.mp4');
// // Create a URL
const url = URL.createObjectURL(
  new Blob([data.buffer], { type: 'video/mp4' }),
);
setMergedVideos(url);

};