【发布时间】:2018-05-07 17:44:24
【问题描述】:
为了将 PCM 音频转换为 MP3,我使用以下方法:
function spawnFfmpeg() {
var args = [
'-f', 's16le',
'-ar', '48000',
'-ac', '1',
'-i', 'pipe:0',
'-acodec', 'libmp3lame',
'-f', 'mp3',
'pipe:1'
];
var ffmpeg = spawn('ffmpeg', args);
console.log('Spawning ffmpeg ' + args.join(' '));
ffmpeg.on('exit', function (code) {
console.log('FFMPEG child process exited with code ' + code);
});
ffmpeg.stderr.on('data', function (data) {
console.log('Incoming data: ' + data);
});
return ffmpeg;
}
然后我将所有内容放在一起:
writeStream = fs.createWriteStream( "live.mp3" );
var ffmpeg = spawnFfmpeg();
stream.pipe(ffmpeg.stdin);
ffmpeg.stdout.pipe(/* destination */);
问题是...现在我想将两个流合并(叠加)为一个。我已经找到了使用 ffmpeg 的方法:How to overlay two audio files using ffmpeg
但是,ffmpeg 命令需要两个输入,到目前为止,我只能将一个输入流通过管道传输到 pipe:0 参数中。如何在生成的命令中通过管道传输两个流?像ffmpeg -i pipe:0 -i pipe:0... 这样的东西有用吗?我将如何使用 PCM 数据对两个传入流进行管道传输(因为该命令需要两个输入)?
【问题讨论】:
标签: node.js audio ffmpeg stream audio-streaming