视频到音频文件通过节点 js 中的 FFMPEG 转换和保存
Posted
技术标签:
【中文标题】视频到音频文件通过节点 js 中的 FFMPEG 转换和保存【英文标题】:video to audio file convert & save through FFMPEG in node js 【发布时间】:2015-08-30 18:43:39 【问题描述】:我正在节点 js 上开发 FFMPEG。我想使用节点 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 视频中检索音频?如何保存?
【问题讨论】:
你想要demux
视频.. 这将音频、字幕和视频相互分离.. 使用 ffmpeg 命令将是:ffmpeg -i file.avi -acodec copy -vn file.ac3
-> 假设 AC3 是当然的音频编解码器! ~
但是我想用 node js 来做这个
这个问题值得一票
【参考方案1】:
我会这样做:
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')
:
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:
用于将视频和音频合并为单个:
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();
【讨论】:
谢谢它的工作。这可以创建音频 mp3 文件。但是如何创建没有音频的视频并将其保存为 file.mp4 ?你能帮帮我吗? 谢谢...你真是太棒了。谢谢你的帮助。我想在脸书上见到你。可以给我facebook id吗?谢谢 你能帮我添加一个没有声音的视频的mp3音频吗?我想在节点 js 中制作这个 ffmpeg。 我已经做到了。但是我遇到了一些问题。如果我的音频比视频长,我该如何删除多余的音频? 尝试将'-shortest'
添加到 outputOptions以上是关于视频到音频文件通过节点 js 中的 FFMPEG 转换和保存的主要内容,如果未能解决你的问题,请参考以下文章