Следующая команда кодирует входное видео и выводит out.mkv.
var default_settings = { "width":1920, "height":1080 };
var settings = Object.assign({}, default_settings);
var encoding_args = ["--of=mpegts", "--ovc=libx264", `--ovcopts=profile=main,preset=veryfast,level=4,crf=20,maxrate=5000k`, `--vf=lavfi=[format=yuv420p,yadif=mode=1:deint=1,scale=(iw*sar)*min(${settings.width}/(iw*sar)\\,${settings.height}/ih):ih*min(${settings.width}/(iw*sar)\\,${settings.height}/ih),pad=${settings.width}:${settings.height}:(${settings.width}-iw*min(${settings.width}/iw\\,${settings.height}/ih))/2:(${settings.height}-ih*min(${settings.width}/iw\\,${settings.height}/ih))/2]`, `--oac=aac`, `--oacopts=ac=2,b=160k`];
var mpv_args = ["input-video.mkv", "-v", '--no-config', '--log-file=mpv.log', ...encoding_args, "--o=out.mkv"];
console.log("mpv "+mpv_args.join(" "));
var mpv = child_process.spawn("mpv", mpv_args);
В командной строке, та же команда, она отлично работает. Если я объединяю аргументы в строку и использую child_process.exe c, это работает отлично. Если я использую child_process.spawn, он работает около 5 секунд ... и затем кодирование приостанавливается. Нет cra sh, нет выхода, только паузы.
Попытка с использованием узла 10, 12 + 13 (Windows 10 64 бит). Проблема присутствует во всех. Это какая-то проблема ограничения буфера? Как мне обойти это, все еще используя spawn?