gpt4 book ai didi

node.js - 在node js中使用ffmpeg将长视频切成小块

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:52 30 4
gpt4 key购买 nike

我有一个非常大的视频,比如 3 小时,我想将其切成每个 20 分钟的小片段。
这是我的初始代码:

var fs = require('fs'); 
var spawn = require('child_process').spawn;
var ffmpeg = spawn("ffmpeg", [
'-i', './videos/long-video.mp4',
'-codec:v', 'copy',
'-codec:a', 'copy',
'-f','mp4',
'-map', '0', '-f', 'segment', '-segment_time', '1200', './videos/pieces/video_%04d.mp4'
]);

这段代码的作用是将视频切成碎片并将它们保存到我提供的位置,因此您需要等待 ffmpeg 完成整个视频的切片。但我正在寻找的是一种在 ffmpeg 制作新片段时触发代码的方法,这样我就可以将视频名称插入数据库中,如下所示:

var fs = require('fs'); 
var spawn = require('child_process').spawn;
var ffmpeg = spawn("ffmpeg", [
'-i', './videos/long-video.mp4',
'-codec:v', 'copy',
'-codec:a', 'copy',
'-f','mp4',
'-map', '0', '-f', 'segment', '-segment_time', '1200',
'pipe:1'
]);
ffmpeg.stdout.on('data', function (data) {
// store the video name in database
console.log('new peice has been made' );
});
ffmpeg.stderr.on('data', function (data) {
console.log('error' );
});

ffmpeg.stdout.on 不会退出,我只是用它来表明我正在寻找的内容。确实存在的是 ffmpeg.stdout.pipe(); 但我再次不知道如何在制作新片段时触发代码。

最佳答案

不确定,但对于nodejs来说,另一种可能性可能是fluence-ffmpeg: https://github.com/fluent-ffmpeg/node-fluent-ffmpeg

在这里您可以以流畅的方式编写 ffmpeg 命令并对事件使用react:

ffmpeg('/path/to/file.avi')
.videoCodec('libx264')
.audioCodec('libmp3lame')
.size('320x240')
.on('error', function(err) {
console.log('An error occurred: ' + err.message);
})
.on('end', function() {
console.log('Processing finished !');
})
.save('/path/to/output.mp4');

关于node.js - 在node js中使用ffmpeg将长视频切成小块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358940/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com