Изменение шоувейвов ffmpeg на белые

Я просмотрел все записи на шоу-волнах и на 99% достиг желаемого результата, но не могу понять, как заставить мою волну отображаться белым цветом. Независимо от того, что я меняю, я все равно получаю черные сигналы. Я надеюсь на слегка прозрачную белую волну на фоне изображения.

      ffmpeg -i 00002.wav -i MarsSurface.jpg -filter_complex "[0:a]showwaves=s=1920x1080:mode=cline:colors=white|white|white:rate=24:scale=lin,colorkey=0x000000:0.01:0.001,format=yuva420p[v];[1:v]scale=1920:1080[bg];[bg][v]overlay[outv]" -map "[outv]" -map 0:a output.mp4

Есть идеи, чего мне не хватает? Я предполагаю, что здесь есть что-то маленькое, но мне этого не хватает.

1 ответ

Следующее предназначено для отображения выборочных волн аудиовходов в виде видеовыхода с применением прозрачности к выходным выборочным волнам, а затем наложением на фоновое изображение. Комментарии относятся к исходному вопросу.

Следующее генерирует белый образец волны на черном фоне.

scale=lin(линейный) не требуется, поскольку это значение по умолчанию.colorsзадает цвет каждого нарисованного канала. Это необходимо указать только один раз, если все каналы имеют один и тот же цвет.

      ffmpeg -i audio.wav -filter_complex [0]showwaves=s=1920x1080:mode=cline:colors=white output.mp4

Ниже приведен пример волны, наложенной на фоновое изображение.

Черный цвет фона из приведенного выше вывода будет применяться только в том случае, если перед выводом не будет доступен альтернативный фон. Поэтому нетcolorkeyфильтр обязателен.

      ffmpeg -i audio.wav -i image.jpg -filter_complex [0:a]showwaves=s=1920x1080:mode=cline:colors=white[v];[1]scale=1920:1080[bg];[bg][v]overlay[out] -map [out] -map 0:a output.mp4

Наконец, прежде чем накладывать образец волны на фоновое изображение, мы можем применить прозрачность к образцам волн.(0.5)используяformatфильтр. Значение между1(полностью непрозрачный) и0(полностью прозрачный), можно установить.

      ffmpeg -i audio.wav -i image.jpg -filter_complex [0:a]showwaves=s=1920x1080:mode=cline:split_channels=1:colors=white[v];[v]format=argb,colorchannelmixer=aa=0.5[vt];[1]scale=1920:1080[bg];[bg][vt]overlay[out] -map [out] -map 0:a output.mp4

В приведенном выше последнем примере я добавилsplit_channels=1вариант, чтобы разделить два канала для большей четкости (опционально).

Все вышеизложенное предназначено только для ответа на исходный вопрос (который нуждается в некотором редактировании). Документация ffmpeg предлагает дополнительные полезные настройки в разделе «Мультимедийные фильтры» : 18.29 showwaves.

https://ffmpeg.org/ffmpeg-filters.html#showwaves

Другие вопросы по тегам