Есть ли способ использовать NVDE C и NVEN C с помощью fluent-ffmpeg? - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь перекодировать видео в несколько разрешений, используя ffmpeg и node.js.

. Я могу запустить это из командной строки, чтобы перекодировать видео в 720p: ffmpeg -vsync 0 -hwaccel cuvid -hwaccel_device 0 -c:v h264_cuvid -i input.mp4 -vf scale_npp=-1:720 -c:a copy -c:v h264_nvenc -b:v 5M output2.mp4

Я также можно транскодировать с помощью процессора, используя следующий код с библиотекой fluent-ffmpeg для node.js

function transcodeToRes(path, shortSide, bitrate, videoID, portrait) {
    return new Promise((res, rej) => {
        let resolution = portrait ? "?x" + shortSide : shortSide + "x?";
        let localSavePath = savePath + videoID + "/" + shortSide + ".mp4";

        ffmpeg()
            .input(path)
            .native()
            .audioCodec('aac')
            .audioBitrate(128)
            .audioChannels(2)
            .videoCodec('libx264')
            .videoBitrate(bitrate)
            .size(resolution)
            .keepDAR()
            .save(localSavePath)
            .on('error', (err) => {
                rej(err);
            })
            .on('end', () => {
                res();
            });
    })
}```

1 Ответ

1 голос
/ 01 февраля 2020

Я понял, вот новый код, который работает, если у кого-то еще есть такая же проблема

ffmpeg()
        .input("/home/yom/test/Kent_4K_Landscape.mp4")
        .inputOption([
            "-vsync 0",
            "-hwaccel cuvid",
            "-hwaccel_device 0",
            "-c:v h264_cuvid"
        ])
        .videoCodec("h264_nvenc")
        .videoFilter("scale_npp=-1:720")
        .native()
        .audioCodec('aac')
        .audioBitrate(128)
        .audioChannels(2)
        .videoBitrate(5000)
        .save("/home/yom/test/out.mp4")
        .on('error', (err) => {
            console.log(err)
        })
        .on('end', () => {
            console.log("done")
        });
...