微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 node js 从 m3u8 文件创建视频剪辑

如何解决使用 node js 从 m3u8 文件创建视频剪辑


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


const args = process.argv.slice(2);
if (args.length !== 4) {
    console.error('Incorrect number of arguments');
    process.exit(1);
  }
const startTime = args[0];
const timeDuration = args[1];
const inputFile = args[2];
const outputFile=args[3];

ffmpeg.setFfmpegPath(ffmpegPath);

ffmpeg(inputFile)
  .setStartTime(startTime)
  .setDuration(timeDuration)
  .output(outputFile)
  .on('end',function(err) {
    if(!err) { console.log('conversion Done') }
  })
  .on('error',function(err){
    console.log('error: ',err)
  }).run();

这是我的 index.js 文件,它可以从任何视频文件(mkv、mp4、ts 等)创建剪辑。 我跑

节点 index.js 0:15 20 ../../video/sample.mp4 ../../video/output.mp4

此命令在我选择的特定文件夹中创建一个文件。我正在运行 slice 方法来删​​除前两个参数并提取最后 4 个参数以创建剪辑。

但我不知道如何从 m3u8 文件创建剪辑,例如

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:12.960000,test0.ts
#EXTINF:8.760000,test1.ts
#EXTINF:10.520000,test2.ts
#EXTINF:9.800000,test3.ts
#EXTINF:10.000000,test4.ts
#EXTINF:10.240000,test5.ts
#EXT-X-ENDLIST

假设我想创建一个 20 秒的文件,从第 15 秒开始,因此它将在 3 秒时从 test1.ts 开始,然后移动到下一个文件 test2.ts,然后只需要 test3 的前 5 秒.ts 创建一个总共 20 秒的文件并给出输出

我很纠结于此。有没有办法像我使用参数那样做到这一点???

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。