有没有办法使用 Fluent-ffmpeg 来使用 NVDEC 和 NVENC?

Daz*_*opz 2 ffmpeg node.js fluent-ffmpeg

我正在尝试使用 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

我还可以使用 CPU 进行转码,使用以下代码和用于 Node.js 的 Fluent-ffmpeg 库

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();
            });
    })
}```
Run Code Online (Sandbox Code Playgroud)

Daz*_*opz 5

我想通了,如果其他人遇到同样的问题,这里是有效的新代码

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")
        });
Run Code Online (Sandbox Code Playgroud)

  • 这是否意味着它在 GPU 上运行? (2认同)