Изменение шоувейвов 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.