Я хочу использовать showwavespic для генерации данных сигнала
Для жизни я не могу понять, чтобы перевести:
-i foo.mp3 -filter_complex aformat=channel_layouts=mono,showwavespic=s=4000x1000 -frames:v 1 foo.png
В команду fluent-ffmpeg. Может кто-нибудь мне помочь?
Я попробовал с самой основной командой:
var inputStream = fs.createReadStream('C:/Somewhere/foo.mp3')
var outputStream = fs.createWriteStream('C:/Somehere/foo.png')
var proc = ffmpeg()
.input(inputStream)
.complexFilter([
'showwavespic'
])
.on('error', function(err) {
console.log('an error happened: ' + err.message);
})
.save(outputStream);
Я получаю ошибку, выданную из обработчика: an error happened: ffmpeg exited with code 1: Cannot find a matching stream for unlabeled input pad 0 on filter Parsed_showwavespic_1
0 ответов
Сложный фильтр должен указать вход для showwavespic
а также для вывода, который я назвал им waveform
Вот как я это делаю: (fluent-ffmpeg v2.1.2)
import FFMPEG from 'fluent-ffmpeg';
const ffmpeg = new FFMPEG({
source: 'path/to/input_file.mp3'
});
ffmpeg
.complexFilter(
[
`[0:a]aformat=channel_layouts=mono,compand=gain=-6,showwavespic=s=4000x1000:colors=#0025ff[waveform]`
],
['waveform']
)
.outputOptions(['-vframes 1'])
.on('start', () => {
console.log('FFMPEG started with command:', command);
})
.on('progress', () => {
console.log('progress:', progress);
})
.on('error', error => {
console.log('FFMPEG error:', error);
reject(error.message);
})
.on('end', () => {
console.log('FFMPEG is done!');
})
.saveToFile('path/to/output.png');
Как сообщает ошибка, вам нужен ввод для вашего showwavespic
фильтр.
Пример на вашем простом примере:
var inputStream = fs.createReadStream('C:/Somewhere/foo.mp3')
var outputStream = fs.createWriteStream('C:/Somehere/foo.png')
var proc = ffmpeg()
.input(inputStream)
.complexFilter([
'[0:a]aformat=channel_layouts=mono,showwavespic=s=4000x1000'
])
.outputOptions(['-vframes 1'])
.on('error', function(err) {
console.log('an error happened: ' + err.message);
})
.save(outputStream);