Jak zamienić dźwięk w wideo (to znaczy pokazać kształty fal w filmie)?

32

Muszę stworzyć film. Część z nich obejmuje „pokazywanie” wywiadu radiowego. Zamiast mieć czarny ekran i słuchać dźwięku, chciałbym mieć zmienny przebieg na ekranie i podpis.

Czy jest jakieś darmowe lub tanie narzędzie, którego mogę użyć, aby to zrobić?


Jeśli poproszę o to znajomego, czy w pakiecie Adobe Creative Suite jest coś, co może to zrobić?

ccleve
źródło
Audacity powinien pokazać ci falę dźwiękową; możesz nagrać - wizualnie - falę.
Warto wspomnieć, że narzędziem „wizualizatora”, którego prawdopodobnie szukasz, jest oscyloskop , który może pomóc w wyszukiwaniu.
Warrior Bob

Odpowiedzi:

52

Możesz użyć ffmpegdo tworzenia wideo z audio za pomocą kilku filtrów.


ahistogram

Konwertuj wejściowy dźwięk na wyjście wideo, wyświetlając histogram głośności.

ahistogram

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]"

ahistogramWięcej informacji i przykładów znajdziesz w dokumentacji.


amperomierz

Konwertuj wejściowy dźwięk na wyjście wideo, wyświetlając fazę audio.

amperomierz

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]"

aphasemeterWięcej informacji i przykładów znajdziesz w dokumentacji.


zakres wektorowy

filtr wektory

Konwertuj wejściowe audio na wyjście wideo reprezentujące zakres wektora audio.

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]"

avectorscopeWięcej informacji i przykładów znajdziesz w dokumentacji.


showcqt

filtr showcqt

Konwertuj wejściowy dźwięk na wyjście wideo reprezentujące widmo częstotliwości z muzyczną skalą tonów.

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]"

showcqtWięcej informacji i przykładów znajdziesz w dokumentacji.


showfreqs

Konwertuj wejściowy sygnał audio na wyjściowy sygnał wideo reprezentujący spektrum mocy audio. Amplituda audio jest na osi Y, a częstotliwość na osi 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]"

showfreqsWięcej informacji i przykładów znajdziesz w dokumentacji.


widowisko

obraz widmowy

Konwertuj wejściowe audio na wyjście wideo reprezentujące spektrum częstotliwości audio.

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]"

showspectrumWięcej informacji i przykładów znajdziesz w dokumentacji.


fale pokazowe

filtr fal pokazowych

Konwertuj wejściowy dźwięk na wyjście wideo reprezentujące fale próbek.

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]"

showwavesWięcej informacji i przykładów znajdziesz w dokumentacji.


showvolume

filtr showvolume

Konwertuj głośność wejściowego dźwięku na wyjście wideo.

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]"

showvolumeWięcej informacji i przykładów znajdziesz w dokumentacji.


Notatki

  • Zobacz FFmpeg Wiki: Podręcznik kodowania H.264, aby uzyskać bardziej szczegółowe informacje na temat jakości wydruku.

  • format=yuv420p upewnia się, że libx264 używa formatu pikseli zgodnego z kiepskimi odtwarzaczami, takimi jak QuickTime.

  • Zamiast ponownego kodowania domyślnie można użyć -c:a copydo strumieniowego kopiowania dźwięku, jeśli format pojemnika wyjściowego obsługuje format audio. Pomyśl o kopiowaniu strumieniowym (remiksowaniu) jak o kopiowaniu i wklejaniu - bez ponownego kodowania.


Dostać ffmpeg

Zawsze powinieneś używać najnowszej wersji, ponieważ programowanie jest bardzo aktywne. Łącza do kompilacji ffmpegdla systemów Windows, OS X i Linux są dostępne na stronie pobierania FFmpeg . Lub postępuj zgodnie ze szczegółowymi instrukcjami kompilacjiffmpeg .

Llogan
źródło
OP prawdopodobnie będzie chciał spojrzeć na inne odpowiedzi, które prowadzą do samouczków After Effects, ale te doskonałe przykłady ffmpeg są naprawdę przydatne tutaj. Dzięki!
mivk
1
@ LordNeckbeard OP tutaj. Minęło trochę czasu, ale wróciłem i to świetna odpowiedź.
ccleve,
Właśnie utworzyłem pytanie superuser.com/questions/1184922/... Jak ustawić obraz tła?
NineCattoRules
6

Adobe After Effects ma wizualizator, patrz

Istnieją również wtyczki, takie jak tutaj dla Photoshopa.

Powodzenia w twoim projekcie.


źródło
4

Rozumiałem twoje pytanie całkiem dobrze. Jeśli próbujesz utworzyć wzór fali, który porusza się zgodnie z wysokością i basem dźwięku, możesz wypróbować to łącze.

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

Efekty Adobe After pozwalają to zrobić z łatwością. Możesz grać razem z efektami cząsteczkowymi, aby uzyskać bardziej solidny wygląd fali.

Powodzenia!


źródło
3

Po przeczytaniu świetnej odpowiedzi od LordNeckbeard stworzyłem mały skrypt do wizualizacji za pomocą ffmpeg i filtra showspectrum. Dodałem również opcję przesyłania, aby kodować bezpośrednio na moim zdalnym serwerze, który ma lepsze połączenie niż w domu, aby przesyłać duże filmy. Korzysta również ze wspaniałego skryptu przesyłanego przez YouTube !

EDYCJA: bezpośrednie przesyłanie znacznie spowalnia proces kodowania !!

Scenariusz

#!/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

Potężny strach
źródło
0

Jeśli masz dostęp do After Effects, istnieje wtyczka o nazwie Trapcode Keys, która może to zrobić bardzo skutecznie. Rezultaty wyglądają naprawdę ładnie - wykorzystałem je w wielu projektach do dokładnie tego, co opisałeś, ale nie jest tanie - same w sobie 150 USD lub 899 USD za pełny pakiet Trapcode.

tomh
źródło