Первоначально я задумывался о том, чтобы загрузить аудиофайлы на YouTube вместе с видео, которое вдохновлено аудио. Конкретная визуализация может быть в другой форме, такой как спектр, спектрограмма или другие формы визуализаций, которые изменяются вместе со звуком. Я не знаком со всеми возможностями ffmpeg или sox, но мне интересно, могу ли я сделать что-то подобное из коробки или в виде серии сценариев с другими утилитами командной строки.
2 ответа
Аудио визуализация с ffmpeg
ffmpeg -i input.mp3 -filter_complex \
"[0:a]avectorscope=s=640x518,pad=1280:720[vs]; \
[0:a]showspectrum=mode=separate:color=intensity:scale=cbrt:s=640x518[ss]; \
[0:a]showwaves=s=1280x202:mode=line[sw]; \
[vs][ss]overlay=w[bg]; \
[bg][sw]overlay=0:H-h,drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf:fontcolor=white:x=10:y=10:text='\"Song Title\" by Artist'[out]" \
-map "[out]" -map 0:a -c:v libx264 -preset fast -crf 18 -c:a copy output.mkv
ffmpeg
может использовать несколько фильтров для визуализации аудио: avectorscope, showpectrum и showwaves. Затем вы можете поместить их в нужное место с помощью наложения, а затем добавить текст с помощью DrawText.
В приведенном выше примере аудиосигнал копируется потоком (ремуксируется), а не перекодируется.
Из FFmpeg Wiki: Как кодировать видео для YouTube и других сайтов обмена видео.
Вот несколько примеров получения аудиофайла, его запуска через ffmpeg
и создания видео на основе некоторых фильтров, доступных в ffmpeg.
Примеры:
спектограмма:
ffmpeg -i song.mp3 -filter_complex showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt -y -acodec copy video.mp4
авектороскоп:
ffmpeg -i song.mp3 -filter_complex avectorscope=s=320x240 -y -acodec copy video.mp4
масштабирование Мандельброта:
ffmpeg -i song.mp3 -f lavfi -i mandelbrot=s=320x240 -y -acodec copy video.mp4
Источник: [Libav-пользователь] ffmpeg показывает спектр в файл