Я использую приведенный ниже скрипт для загрузки потокового видео vimeo.
Проблема в том, что скрипт загружает различные фрагменты .m4s и создает файл .m4a для аудио и .m4v для видео. Поэтому я должен использовать команду ffmpeg вручную через cmd, чтобы объединить их в один файл .mkv
Я бы хотел добавить командную строку в скрипт, чтобы это делалось автоматически. Я пробовал несколько разных команд и комбинаций между ними, таких как .exec, .execFile, .spawn, все безуспешно
Те же примеры:
1) с использованием execFile
const child = execFile('ffmpeg', ['-i', 'input.m4v' , '-i' , 'input.m4a' , '-c' , 'copy' , 'output.mkv' ], (error, stdout, stderr) => {
if (error) {
console.error('stderr: =============================', stderr);
throw error;
}
console.log('stdout: ==========================', stdout);
});
console.log('here');
2) используя exec
const child = exec('ffmpeg', ['-i', 'input.m4v' , '-i' , 'input.m4a' , '-c' , 'copy' , 'output.mkv', (error, stdout, stderr) => {
if (error) {
console.error('stderr: =============================', stderr);
throw error;
}
console.log('stdout: ==========================', stdout);
});
console.log('here');
3) с помощью spawn
var cmd = 'D:\vimeo\ffmpeg';
var args = [
'-i', 'D:\vimeo\input.m4a',
'-i', 'D:\vimeo\input.m4v',
'-c', 'copy', 'D:\vimeo\output.mkv'
];
var proc = spawn(cmd, args);
proc.stdout.on('data', function(data) {
console.log(data);
});
proc.stderr.on('data', function(data) {
console.log(data);
});
proc.on('close', function() {
console.log('finished');
});
Что я делаю не так?
Мессангены ошибки:
1)
D:\vimeo\vimeo-downloader.js:94
const child = execFile('ffmpeg', ['-i', 'input.m4v' , '-i' , 'input.m4a' , '-c' , 'copy' , 'output.mkv' ], (error, stdout, stderr) => {
^
ReferenceError: execFile is not defined
at Object.<anonymous> (D:\vimeo\vimeo-downloader.js:94:15)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
2)
D:\vimeo\vimeo-downloader.js:100
});
^
SyntaxError: Unexpected token )
at Module._compile (internal/modules/cjs/loader.js:721:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
3) * * тысяча тридцать-пять
D:\vimeo\vimeo-downloader.js:102
var proc = spawn(cmd, args);
^
ReferenceError: spawn is not defined
at Object.<anonymous> (D:\vimeo\vimeo-downloader.js:102:12)
at Module._compile (internal/modules/cjs/loader.js:776:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)