有没有一种方法,我们可以添加我们的预定义自己的视频剪辑到现有的视频通过一些脚本,然后保存为一个视频?我们不想使用任何视频编辑软件的请告诉我,你有任何方法来视频编辑和连接视频吗?
发布于 2019-12-08 07:02:41
欢迎!ffmpeg是我最喜欢的通过代码处理音频和视频文件的方法,并且可以与大多数脚本语言一起使用(我是用python编写的)。已经有了一个在这里回答问题,但我将给出另一个例子。
由于您标记了javascript和node.js,这里是我用编程方式(通过代码)完成这一任务的代码片段,而无需使用视频编辑器。我在linux、mac和windows上使用了这种方法,因此文件路径依赖于您的系统。它适用于大多数主要的音频和视频格式,但就本例而言,我使用的是.mp4。我刚刚测试了我在Windows 10上发布的这个精确的设置,它没有任何错误。
首先,创建一个新的节点项目(如果您还没有这样做)
npm init接下来,从命令行使用npm节点安装ffmpeg (这将安装在任何平台上: linux、osx、windows) npm包
npm install ffmpeg-downloader有多种方法组合视频,但我喜欢下面的方法。为了组合文件,您需要在一个.txt文件中列出完整的文件路径,--每行一个视频文件--,ffmpeg将读取该文件以进行合并(我称之为 files.txt,但它可以被称为任何东西)。我不确定你可以有多少视频限制,但我已经将多达15个视频一次合并成一个没有问题的最后一个视频。
files.txt的内容如下所示;您可以事先创建它,也可以通过代码创建它,这取决于您的需要:
file 'C:\path\to\file1.mp4'
file 'C:\path\to\file2.mp4'
file 'C:\path\to\file3.mp4'
file 'C:\path\to\file4.mp4'现在,在一个javascript文件(我称为我的combine.js)中,您可以调整以下内容以适应您的文件路径结构。
const { exec } = require('child_process');
const ffmpeg = require('ffmpeg-downloader');
function combineVideos() {
console.log('process starting');
// executable for ffmpeg
const exe = ffmpeg.path;
// the files.txt that contains the list of files to combine
const filesList = 'C:\\path\\to\\files.txt';
// where you want the final video to be created
const outFile = 'C:\\path\\to\\finalCombinedVideo.mp4';
// build the command that ffmpeg will run. It will look something like this:
// ffmpeg -y -f concat -safe 0 -i "path/to/files.txt" -c copy "path/to/finalCombinedVideo.mp4"
const cmd = '"' + exe + '" -y'
+ ' -f concat'
+ ' -safe 0'
+ ' -i "' + filesList + '"'
+ ' -c copy "' + outFile + '"';
exec(cmd, (err, stdout, stderr) => {
if (err) {
console.error(`exec error: ${err}`);
return;
}
console.log(`process complete: ${outFile}`);
});
}
// call the combineVideos function
combineVideos();现在,您可以使用节点来运行组合函数并创建视频。
node combine.js
process starting
process complete: C:\path\to\finalCombinedVideo.mp4我希望这能对你有所帮助。祝你好运!
https://stackoverflow.com/questions/59232712
复制相似问题