Як перетворити звук у відео (тобто показати форми хвиль у відео)?


32

Я маю створити відео. Частина його включає "показ" радіоінтерв'ю. Замість того, щоб просто мати чорний екран і слухати звук, я хотів би мати різну форму хвилі на екрані та підпис.

Чи є якийсь безкоштовний чи дешевий інструмент, який я можу використати для цього?


Якщо я попрошу свого друга зробити це, чи є в Adobe Creative Suite щось, що може зробити цю роботу?


Сміливість повинна показати вам звукову хвилю; ви могли візуально записати хвилю.

Варто згадати, що інструмент "візуалізатор", який ви, мабуть, шукаєте, - це осцилограф , який може повідомити про ваш пошук.
Воїн Боб

Відповіді:


52

Ви можете використовувати ffmpegдля створення відео з аудіо за допомогою декількох фільтрів.


ахістограма

Перетворити вхідний звук у відеовихід, відображаючи гістограму гучності.

ахістограма

ffmpeg

ffmpeg -i input.flac -filter_complex \
"[0:a]ahistogram,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.flac, asplit [a][out1]; [a] ahistogram [out0]"

Додаткові ahistogramпараметри та приклади див. У документації.


афасеметр

Перетворити вхідний аудіо у відео вихід, відображаючи фазу звуку.

афасеметр

ffmpeg

ffmpeg -i input.wav -filter_complex \
"[0:a]aphasemeter=s=1280x720:mpc=cyan,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.wav, asplit [a][out1]; [a] aphasemeter=s=1280x720:mpc=cyan [out0]"

Додаткові aphasemeterпараметри та приклади див. У документації.


avectorscope

avectorscope filter

Перетворити вхідне аудіо у відеовихід, що представляє область аудіо вектора.

ffmpeg

ffmpeg -i input.mp3 -filter_complex \
"[0:a]avectorscope=s=1280x720,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mp3, asplit [a][out1]; \
[a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]"

Додаткові avectorscopeпараметри та приклади див. У документації.


showcqt

showcqt фільтр

Перетворити вхідний звук у відеовихід, що представляє частотний спектр, з музичною тональною шкалою.

ffmpeg

ffmpeg -i input.mp4 -filter_complex \
"[0:a]showcqt,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mp4, asplit [a][out1]; [a] showcqt [out0]"

Додаткові showcqtпараметри та приклади див. У документації.


showfreqs

Перетворити вхідне аудіо у вихідний відеосигнал, що представляє спектр потужності звуку. Амплітуда звуку знаходиться на осі Y, а частота - на осі X.

showfreqs

ffmpeg

ffmpeg -i input.mp4 -filter_complex \
"[0:a]showfreqs=mode=line:fscale=log,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mp4, asplit [a][out1]; [a]  showfreqs=mode=line:fscale=log [out0]"

Додаткові showfreqsпараметри та приклади див. У документації.


шоуспектр

показує спектр зображення

Перетворити вхідний звук у відеовихід, представляючи частотний спектр звуку.

ffmpeg

ffmpeg -i input.oga -filter_complex \
"[0:a]showspectrum=s=1280x720,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.oga, asplit [a][out1]; \
[a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]"

Додаткові showspectrumпараметри та приклади див. У документації.


показові хвилі

фільтр шоу-хвиль

Перетворити вхідний аудіо у відео вихід, представляючи хвилі зразків.

ffmpeg

ffmpeg -i input.m4a -filter_complex \
"[0:a]showwaves=s=1280x720:mode=line:rate=25,format=yuv420p[v]" \
-map "[v]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.m4a, asplit [a][out1]; [a] showwaves [out0]"

Додаткові showwavesпараметри та приклади див. У документації.


шоувол

фільтр showvolume

Перетворити вхідний звуковий сигнал у вихідний відео.

ffmpeg

ffmpeg -i input.mka -filter_complex \
"[0:a]showvolume=f=1:b=4:w=720:h=68,format=yuv420p[vid]" \
-map "[vid]" -map 0:a output.mp4

ffplay

ffplay -f lavfi "amovie=input.mka, asplit [a][out1]; [a] showvolume=f=255:b=4:w=720:h=68 [out0]"

Додаткові showvolumeпараметри та приклади див. У документації.


Примітки

  • Дивіться FFmpeg Wiki: Посібник з кодування H.264 для отримання більш детальної інформації щодо якості виводу.

  • format=yuv420p гарантує, що libx264 використовує формат пікселів, сумісний з хитрими програвачами, такими як QuickTime.

  • Замість повторного кодування за замовчуванням, ви можете використовувати , -c:a copyщоб потік копіювати аудіо , якщо ваш вихідний формат контейнера підтримує аудіоформат. Подумайте про потокове копіювання (повторне відтворення музики) як копію та вставлення - не потрібно перекодування.


Отримайте ffmpeg

Ви завжди повинні використовувати останню версію, оскільки розробка дуже активна. Посилання на версії ffmpegдля Windows, OS X та Linux доступні на сторінці завантаження FFmpeg . Або ви можете слідувати покроковому посібнику для складанняffmpeg .


ОП, ймовірно, захоче розглянути інші відповіді, які посилаються на підручники After Effects, але ці чудові приклади ffmpeg справді корисні. Спасибі!
mivk

1
@ LordNeckbeard OP тут. Минув час, але я повернувся, і це чудова відповідь.
ccleve

Щойно я створив питання superuser.com/questions/1184922/… Як я можу встановити фонове зображення?
NineCattoRules

6

Adobe After Effects має візуалізатор, див

Також є такі плагіни, як тут для Photoshop.

Успіхів у вашому проекті.


4

Я добре зрозумів ваше запитання. Якщо ви намагаєтеся зробити шаблон сигналу, який рухається відповідно до висоти та басу звуку, тоді ви можете спробувати це посилання.

http://www.videocopilot.net/tutorial/audio_to_animation/

Adobe After Effects дозволяє вам це зробити легко. Ви можете грати разом з ефектами частинок, щоб отримати більш солідний вигляд хвилі.

Удачі!


3

У багатьох музичних програвачах є візуалізатори. Відтворіть аудіо в одному з них і скористайтеся екраном для запису відео.

Ви також можете спробувати використовувати gstreamer, як описано на веб- сайті http://www.vidarholen.net/contents/blog/?p=23

Ще один варіант - Sonic Candle, http://sourceforge.net/projects/soniccandle/


3

Прочитавши чудову відповідь від LordNeckbeard, я продовжив створення невеликого сценарію, щоб зробити візуалізацію за допомогою ffmpeg та фільтра showpectrum. Я також додав можливість завантаження для себе, щоб кодувати безпосередньо на віддалений сервер, який має кращий зв’язок, ніж вдома для завантаження великих відео. Він також використовує чудовий сценарій youtube-upload !

EDIT: завантаження безпосередньо сповільнює процес кодування !!

Сценарій

#!/bin/bash
# ffmpeg spectrum maker

action=$1

infile=$2

outfile=$3
upload_server="sftp://cloud"

upload_location="/home/master/videos/"

remote_command="youtube-upload --title=\"Remote_upload\" --privacy=\"private\" $upload_location$outfile"

#simple spectrum
filter1="showspectrum=s=1920x1080:slide=scroll:mode=combined:color=intensity:scale=cbrt:saturation=1:win_func=hann[tmp]"

#vertical mirror
filter2="[tmp]crop=iw:ih/2:0:ih/2-3,split[up][tmp];[tmp]vflip[down];[up][down]vstack[tmp]"

#horizontal mirror
filter3="[tmp]crop=iw/2:ih:iw/2:,split[left][tmp];[tmp]hflip[right];[left][right]hstack[tmp]"

#fisheye effect VERY SLOW!!! if used make change the size of the spectrum to (1920*11/10)x(1080*11/10) and use the crop filter below
filter4="[tmp]frei0r=filter_name=defish0r:filter_params=1.5|n[tmp]"

#make sure the resolution has the desired size
filter5="[tmp]crop=1920:1080"

#pass the stream to the output for ffplay
testpass="[tmp]copy[out0]"


vcodec="-codec:v libx264 -pix_fmt yuv420p -tune grain -crf 21 -preset medium -bf 2 -flags +cgop -r 25"

acodec="-codec:a libfdk_aac -b:a 128k -movflags +faststart"

#acodec="-codec:a copy"

extraflags="-movflags +faststart "


if [ "$action" = "test" ]
then
        ffplay -f lavfi "amovie=$infile,asplit[a][out1];[a]$filter1;$filter2;$filter3;$testpass"
fi

if [ "$action" = "make" ]
then
        ffmpeg -i "$infile" -filter_complex "[0:a]$filter1;$filter2;$filter3" -map [tmp] -map 0:a $vcodec $acodec $extraflags "$outfile"
fi
if [ "$action" = "upload" ]
then
        ffmpeg -i "$infile" -filter_complex "[0:a]$filter1;$filter2;$filter3" -map [tmp] -map 0:a $vcodec $acodec $extraflags "$upload_server$upload_location$outfile"
        ssh cloud $remote_command
fi
exit


0

Якщо у вас є доступ до After Effects, є плагін під назвою Ключі Trapcode, який може зробити це дуже ефективно. Результати виглядають дуже приємно - я використовував їх у багатьох проектах саме для того, що ви описали, але це не дешево - 150 доларів самостійно або 899 доларів за повний Trapcode Suite.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.