ffmpeg showwaves - меняет цвет сигнала на верхней части изображения - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужна помощь с ffmpeg.

Я написал этот код:

@echo off  
for %%F in (*.opus *.ogg) do 
(  
  ffmpeg -y -i "%%F" -loop 1 -i "default.jpg" -filter_complex " 
 [0:a]showwaves=s=2560x1440:mode=cline:r=30,colorkey=0x000000:0.01:0.1,format=yuva420p[v];
[1:v][v]overlay[outv]" -map "[outv]" -pix_fmt yuv420p -map 0:a -vcodec libvpx-vp9 -lossless 1 -speed 8 -acodec copy -shortest "%%~nF.webm" 
)

Что он делает для каждого аудиофайла .opus или .ogg, он выводит видео с фоновым изображением default.jpg (которое полностью белое) и осциллограммой поверх него, с воспроизводимым звуком. Проблема в том, что я бы изменил цвет сигнала на черный, но я не понимаю, как работает цветовой ключ даже после прочтения документации ...

В принципе, я хочу получить что-то вроде этого (но сигнал будучи в черном): https://www.youtube.com/watch?v=k9arneFijG8

Заранее спасибо.

1 Ответ

0 голосов
/ 09 апреля 2020

Вы можете использовать опцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...