我尝试将一系列.ts文件转换为一个mp4文件,使用ffmpeg通过节点执行:
var combineVideo = function (videoFiles, fileName, callback) {
var videoDone = _.after(videoFiles.length, function () {
var ffmpegcommand = 'ffmpeg -i "concat:';
ffmpegcommand += _.inject(videoFiles, function (command, name, i) {
return command + process.env.UPLOAD_PATH + fileName + '-' + i + '.ts|';
}, '');
ffmpegcommand = ffmpegcommand.substring(0, ffmpegcommand.length - 1);
ffmpegcommand += '" -c copy -bsf:a aac_adtstoasc -strict -2 ' + process.env.UPLOAD_PATH + fileName + 'combined-video.mp4';
exec(ffmpegcommand, function (error, stdout, stderr) {
if (error) {
logger.error(error);
}
_.each(videoFiles, function (v, i) {
fs.unlink(process.env.UPLOAD_PATH + fileName + '-' + i + '.ts');
});
callback();
});
});
_.each(videoFiles, function (file, i) {
convertWebmToMp4(fileName + '-' + i, videoDone);
});
我在执行命令之前记录了命令:
结合视频 / usr / bin / ffmpeg -i" concat:./ uploads / db42ab00-4140-11e5-83dd-936f6cb4a63a-0.ts | ./uploads/db42ab00-4140-11e5-83dd-936f6cb4a63a-1.ts 34; -c copy -bsf:a aac_adtstoasc -strict -2 ./uploads/db42ab00-4140-11e5-83dd-936f6cb4a63acombined-video.mp4
我收到的错误消息是:
{[错误:命令失败:ffmpeg版本2.5.7-0ubuntu0.15.04.1版权所有(c)2000-2015 FFmpeg开发人员 使用gcc 4.9.2(Ubuntu 4.9.2-10ubuntu13)构建
[aac @ 0x8ae8c0]编码器' aac'是实验性的,但实验编解码器未启用,添加' -strict -2'如果你想使用它。 ] killed:false,代码:1,signal:null}
但是,确切的ffmpeg命令已经有-strict -2标志,它在命令行或单独的.js文件中运行正常。我很难过。