Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 视频到音频文件转换&;通过节点js中的FFMPEG保存_Javascript_Node.js_Audio_Video_Ffmpeg - Fatal编程技术网

Javascript 视频到音频文件转换&;通过节点js中的FFMPEG保存

Javascript 视频到音频文件转换&;通过节点js中的FFMPEG保存,javascript,node.js,audio,video,ffmpeg,Javascript,Node.js,Audio,Video,Ffmpeg,我正在节点js上开发FFMPEG。我想使用node js从视频文件中检索音频曲目。我也想保存这样的文件,但我不知道如何保存 我认为这一行代码可以帮助我: ffmpeg('/path/to/file.avi').noVideo(); 我有这个在npm包。我不太明白如何使用它,以及如何实际保存音频文件 其他一些代码也在起作用: try { var process = new ffmpeg('/path/to/your_movie.avi'); process.then(functi

我正在节点js上开发FFMPEG。我想使用node js从视频文件中检索音频曲目。我也想保存这样的文件,但我不知道如何保存

我认为这一行代码可以帮助我:

ffmpeg('/path/to/file.avi').noVideo();
我有这个在npm包。我不太明白如何使用它,以及如何实际保存音频文件

其他一些代码也在起作用:

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
,并且是系统路径的一部分,同时确保所有必要的代码都存在

更新:

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


更新2:

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

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();
}

你想
demux
视频。。这将音频、字幕和视频彼此分离。。有了ffmpeg,命令将是:
ffmpeg-i file.avi-acodec copy-vn file.ac3
->假设ac3是C课程的音频编解码器~但是我想用节点JS来解决这个问题,这个问题值得一提,因为它是有效的。这可以创建音频mp3文件。但是如何创建没有音频的视频并将其保存到file.mp4?你能帮帮我吗?谢谢。。。你太棒了。谢谢你的帮助。我想在facebook上见到你。你能给我一个facebook id吗?谢谢,请帮我添加一个mp3音频和一个没有声音的视频??我想在node js中制作这个ffmpeg。我已经完成了。但是我遇到了一些问题。如果我的音频比视频长,如何删除额外的音频?请尝试将
'-shortest'
添加到输出选项中
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();
}