用JS改变视频分辨率

Ste*_*ven 2 javascript video-processing node.js

我正在为用户开发视频存储服务,我需要在保存大型视频 (vg 4K) 之前将其压缩到 1080p。是否有 JS 库(浏览器或 Node)可以帮助完成此任务?也许是网络服务?

我也接受语言建议。

小智 10

当谈到缩小视频尺寸时,最容易使用的选项是 ffmpeg。

有一个包可以让在 Node.js 中使用 ffmpeg 变得更容易:https://www.npmjs.com/package/ Fluent-ffmpeg

例如,将视频缩小到 1080p 和 720p:

    var ffmpeg = require('fluent-ffmpeg');
    function baseName(str) {
        var base = new String(str).substring(str.lastIndexOf('/') + 1); 

        if(base.lastIndexOf(".") != -1) {
            base = base.substring(0, base.lastIndexOf("."));
        }

        return base;
    }

    var args = process.argv.slice(2);
    args.forEach(function (val, index, array) {
        var filename = val;
        var basename = baseName(filename);
        console.log(index + ': Input File ... ' + filename);

        ffmpeg(filename)
            .output(basename + '-1280x720.mp4')
            .videoCodec('libx264')  
            .size('1280x720')

            .output(basename + '-1920x1080.mp4')
            .videoCodec('libx264')
            .size('1920x1080')

            .on('error', function(err) {
                console.log('An error occurred: ' + err.message);
            })  
            .on('progress', function(progress) { 
                console.log('... frames: ' + progress.frames);
            })
            .on('end', function() { 
                console.log('Finished processing'); 
            })
            .run();
    });
Run Code Online (Sandbox Code Playgroud)

(来源:https ://gist.github.com/dkarchmer/635496ff9280011b3eef )

您不需要任何节点包来运行 ffmpeg,您可以使用child_processnode.js 中的 API。

ffmpeg 软件包必须安装在将运行应用程序的服务器上。