Вы можете использовать опцию colors
в фильтре showwaves :
ffmpeg -y -i input.opus -loop 1 -framerate 30 -i default.jpg -filter_complex "[0:a]aformat=channel_layouts=mono,showwaves=s=2560x1440:mode=cline:r=30:colors=black[v];[1:v][v]overlay=format=auto:x=(W-w)/2:y=(H-h)/2,format=yuv420p[outv]" -map "[outv]" -map 0:a -c:v libvpx-vp9 -lossless 1 -speed 8 -c:a copy -shortest output.webm
Я внес некоторые изменения:
Добавил Фильтр формата для понижающего микширования звука в единый сигнал. Это только для фильтра showwaves: звук, передаваемый в выходной файл, останется нетронутым.
Соответствует default.jpg
частота кадров для частоты кадров showwaves.
Устранен фильтр цветовых клавиш.
Центрирование осциллограммы.
Перемещение фильтра форматирования до конца для вывода YUV 4: 2 : 0 и удалил лишнюю опцию «вне фильтра» -pix_fmt yuv420p
.
В качестве альтернативы, поскольку вы сказали, что default.jpg
полностью белый, вы можете просто заставить ffmpeg генерировать белый фон вместо с исходным фильтром color :
ffmpeg -y -i input.opus -f lavfi -i color=s=2560x1440:r=30:color=white -filter_complex "[0:a]aformat=channel_layouts=mono,showwaves=s=2560x1440:mode=cline:r=30:colors=black[v];[1:v][v]overlay=format=auto:x=(W-w)/2:y=(H-h)/2,format=yuv420p[outv]" -map "[outv]" -map 0:a -c:v libvpx-vp9 -lossless 1 -speed 8 -c:a copy -shortest output.webm