我们如何使用 node.js 将 m3u8 文件和相应的 ts 文件上传到 amazon s3 存储桶

How can we upload m3u8 file and corresponding ts file to amazon s3 bucket using node.js

我正在尝试将生成的 m3u8 文件和相应的 ts 文件上传到 s3 存储桶,但问题是我如何将所有 .ts 文件与 m3u8 一起上传。

我的 ffmpeg 代码是

const ffmpeg = require('fluent-ffmpeg')
const ffmpegInstaller = require('@ffmpeg-installer/ffmpeg')


ffmpeg.setFfmpegPath(ffmpegInstaller.path)

ffmpeg('uploads/malayalam.mp4').addOptions([

'-c:a',
  'aac',
  '-ar',
  '48000',
  '-b:a',
  '128k',
  '-c:v',
  'h264',
  '-profile:v',
  'main',
  '-crf',
  '20',
  '-g',
  '48',
  '-keyint_min',
  '48',
  '-sc_threshold',
  '0',
  '-b:v',
  '2500k',
  '-maxrate',
  '2675k',
  '-bufsize',
  '3750k',
  '-hls_time',
  '4',
  '-hls_playlist_type',
  'vod',
  '-hls_segment_filename',
  'uploads/video/720p_%03d.ts'

]).output('uploads/video/output.m3u8').on('end',(err,data)=>{
  console.log(data)
  console.log('end')
}).run()

生成的m3u8文件目录看起来像

我使用此代码上传 m3u8 文件

const aws = require('aws-sdk')

  const s3 = new aws.S3({
    accessKeyId:"secretid",
    secretAccessKey:"accesskey"
  })

  const fileContent = fs.readFileSync("uploads/video/output.m3u8");


  const params = {
    Body: fileContent,
    Bucket:"5am5pm",
    Key:"output.m3u8"
  }

  s3.upload(params,(err,data)=>{
    if(err){
      console.log(err)
    }else{
      console.log(data)
    }
  })

但是它只上传 m3u8 文件 我怎么也上传 .ts 文件。如果有人帮助,非常感谢

正如其他人所建议的,只需遍历文件并单独上传:

fs.readdir('uploads/video', (err, files) => {
    if (err) {
        return console.log('Failed to list directory: ' + err);
    } 

    files.forEach(file => {
        const params = {
            Body: fs.createReadStream('uploads/video/' + file);,
            Bucket:"5am5pm",
            Key: file
        }

        s3.upload(params, (err, data) => {
            if (err) {
                console.log(err)
            } else {
                console.log(data)
            }
        });
    });
});