پاسخ داده شد
پاسخ عالی
0
0

برای این کار می توانید از کتابخانه ffmpeg استفاده کنید. ابتدا آن را نصب کنید:

npm i @ffmpeg-installer/ffmpeg

بعد بصورت زیر از آن استفاده کنید:

    // Input file path
    const inputPath = file.path;

    // Output file path
    const outputPath = 'compressed/uploads/posts/'+file.filename;

    const fs = require('fs');
    const outputDir = 'compressed/uploads/posts';
    if (!fs.existsSync(outputDir)) {
      fs.mkdirSync(outputDir, { recursive: true });
    }

    const ffmpegPath = require('@ffmpeg-installer/ffmpeg').path;
    const ffmpeg = require('fluent-ffmpeg');
    ffmpeg.setFfmpegPath(ffmpegPath);

    const command = ffmpeg(inputPath)
    .videoCodec('libx264')
    .outputOptions(['-preset slow', '-crf 0'])
  .output(outputPath)
  .on('end', () => {
    console.log('Compression complete!');
    
  });

command.run();

*دقت کنید که فشرده سازی عملی زمانبر خواهد بود که در یک thread جداگانه انجام می شود و بسته به اندازه اولیه ویدیو زمان متفاوتی خواهد داشت.

*با تغییر متغیرهای ffmpeg می توانید نحوه فشرده سازی را تعیین کنید (در اینجا با تغییر outputOptions و videoCodec )

*برای یک الگوریتم فشرده سازی خاص با ffmpeg این پست را ببینید.

* اگر خواستید فایل فشرده شده را جایگزین فایل اصلی کنید، از این پست کمک بگیرید.

* اگر در نحوه ذخیره کردن فایل آپلودی کاربر سوال داشتید، این پست را ببینید.

*برای فشرده سازی تصاویر این پست را ببینید.

  • شما باید برای ارسال دیدگاه شوید
نمایش 1 نتیجه
پاسخ شما
اگر قبلاً حساب کاربری دارید با پر کردن فیلد های زیر یا به عنوان مهمان ارسال کنید.
نام*
ایمیل*
وب سایت