通过FFMPEG保存在节点js中

通过FFMPEG保存在节点js中

本文介绍了视频到音频文件转换&通过FFMPEG保存在节点js中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在节点js上进行FFMPEG处理.我想使用node js从视频文件中检索音轨.我也想保存这样的文件,但是我不知道怎么做.

I am working on an FFMPEG on node js. I'd like to retrieve the audio track from a video file using node js. I would also like to save such file but I can't figure out how.

尽管这行代码对我有帮助:

I though this line of code would help me :

ffmpeg('/path/to/file.avi').noVideo();

我已经在npm软件包中得到了它.我不太了解如何使用它以及如何实际保存音频文件.

I have got this in npm package. I don't quite understand how to work with this and how to actually save the audio file.

其他一些代码行:

try {
    var process = new ffmpeg('/path/to/your_movie.avi');
    process.then(function (video) {
        // Callback mode
        video.fnExtractSoundToMP3('/path/to/your_audio_file.mp3', function (error, file) {
            if (!error)
                console.log('Audio file: ' + file);
        });
    }, function (err) {
        console.log('Error: ' + err);
    });
} catch (e) {
    console.log(e.code);
    console.log(e.msg);
}

我的问题是:

如何从FFMPEG视频中检索音频?如何保存?

推荐答案

我会这样做:

var ffmpeg = require('fluent-ffmpeg');
/**
 *    input - string, path of input file
 *    output - string, path of output file
 *    callback - function, node-style callback fn (error, result)
 */
function convert(input, output, callback) {
    ffmpeg(input)
        .output(output)
        .on('end', function() {
            console.log('conversion ended');
            callback(null);
        }).on('error', function(err){
            console.log('error: ', e.code, e.msg);
            callback(err);
        }).run();
}

convert('./df.mp4', './output.mp3', function(err){
   if(!err) {
       console.log('conversion complete');
       //...

   }
});

只需确保已安装ffmpeg并且它是系统路径的一部分,还请确保所有必需的代码均已存在.

just make sure ffmpeg is installed and is part of system path, also make sure all the necessary codes are present.

更新:

对于没有音频的视频,只需执行.noAudio().videoCodec('copy'):

for video without audio, simply do .noAudio().videoCodec('copy'):

function copyWitoutAudio(input, output, callback) {
    ffmpeg(input)
        .output(output)
        .noAudio().videoCodec('copy')
        .on('end', function() {
            console.log('conversion ended');
            callback(null);
        }).on('error', function(err){
            console.log('error: ', err);
            callback(err);
        }).run();
}


更新2:

用于将视频和音频合并为单个:

for merging video and audio into single:

function mergeMedia(aud, vid, output, callback) {
    ffmpeg()
        .input(aud)
        .input(vid)
        .output(output)
        .outputOptions(
          '-strict', '-2',
          '-map', '0:0',
          '-map', '1:0'
        ).on('end', function() {
            console.log('conversion ended');
            callback(null);
        }).on('error', function(err){
            console.log('error: ', err);
            callback(err);
        }).run();
}

这篇关于视频到音频文件转换&通过FFMPEG保存在节点js中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 07:43