【问题标题】:node js fluent-ffmpeg creating thumbnailnode js fluent-ffmpeg 创建缩略图
【发布时间】:2021-06-05 00:29:49
【问题描述】:

目前我正在处理一些视频上传,所以我想在上传视频的过程中创建一个缩略图。我安装了 fluent-ffmpeg 包,但在第一次运行时出现错误 Error: cannnot find ffprobe 然后我将 ffmpeg 更改为 ffmpeg.ffprobe 然后我得到了 undefined .on.. 这是我的视频上传完整代码:

const multer = require('multer');
const uuid = require('uuid/v1');
const ffmpeg = require('fluent-ffmpeg');


const MIME_TYPE_MAP = {
  'video/MPEG-4': 'MPEG-4',
  'video/mpeg-4': 'mpeg-4',
  'video/mp4': 'mp4',
  'video/MP4': 'MP4'
};

const videoUpload = multer({
  limits: 10000000,
  storage: multer.diskStorage({
    destination: (req, file, cb) => {
      cb(null, 'uploads/videos');
    },
    filename: (req, file, cb) => {
      const ext = MIME_TYPE_MAP[file.mimetype];
      const currentfilename = uuid() + '.' + ext;
      cb(null, currentfilename);

      
      ffmpeg.ffprobe(`uploads/videos/${currentfilename}`)
      .on('end', function() {
        console.log('Screenshots taken');
      })
      .on('error', function(err) {
        console.error(err);
      })
      .screenshots({
        count: 1,
        folder: 'uploads/videos/thumb',
        filename: uuid() + '_screenshot.' + ext
      });
    }
  }),
  fileFilter: (req, file, cb) => {
    const isValid = !!MIME_TYPE_MAP[file.mimetype];
    let error = isValid ? null : new Error('Invalid mime type!');
    cb(error, isValid);
  }

});

module.exports = videoUpload;

【问题讨论】:

  • 只验证文件上传部分 - 没有 ffmpeg - 以确保 asnych #1 ( upld ) 在代码中的哪个位置完成。这就是你的回调 w ffmpeg 片段应该去的地方 - 只需遵循流利的文档,因为你有 ffmpeg 部分的正常用例。确保在上传部分的“onComplete”事件之前没有调用 ffmpeg。
  • 你能提供一些关于我发布的代码的例子吗?

标签: node.js fluent-ffmpeg video-thumbnails


【解决方案1】:

看到的事情是fluent-ffmpeg 为您提供了与ffprobe and ffmpeg 一起使用的功能,它没有为您提供它们(因此您必须简而言之手动安装它们)。其他方法是再安装 2 个库 @ffmpeg-installer/ffmpeg@ffprobe-installer/ffprobe 并将路径传递到 fluent.ffmpeg.Here

【讨论】:

  • 我确实安装了所有东西并使用了您的代码,但现在我得到了:错误:ffmpeg 以代码 1 退出:uploads/videos/cd302570-7ebf-11eb-98c1-a19b59997719.mp4:处理时发现无效数据输入@这是我目前的代码:pastebin.com/nxyvFf3X
  • 您确定要上传的视频有 10 秒,因为您在第 10 秒截取屏幕截图。 [mov,mp4,m4a,3gp,3g2,mj2 @ 00000000001345c0] moov atom not found 似乎也有问题,我猜这不是 ffmpeg 问题....从你的堆栈恍惚中得到。
  • 谢谢,我知道我是如何修复的,我什么也没做,但我的代码现在可以正常工作了:)
  • 我使用的在线转换器似乎有问题:)
  • 如果代码有效,请将答案标记为正确。谢谢
猜你喜欢
  • 2012-10-18
  • 1970-01-01
  • 2014-09-07
  • 2011-12-31
  • 2011-04-24
  • 2013-12-20
  • 2015-01-24
  • 2012-02-24
  • 1970-01-01
相关资源
最近更新 更多