Wie wandle ich Audio in Video um (dh zeige die Wellenformen in einem Video)?


32

Ich muss ein Video erstellen. Ein Teil davon beinhaltet das "Zeigen" eines Radiointerviews. Anstatt nur einen schwarzen Bildschirm zu haben und Audio zu hören, möchte ich eine unterschiedliche Wellenform auf dem Bildschirm und eine Beschriftung haben.

Gibt es ein kostenloses oder billiges Tool, mit dem ich das machen kann?


Wenn ich einen Freund dazu auffordere, gibt es in der Adobe Creative Suite irgendetwas, das den Job erledigen kann?


Audacity sollte Ihnen die Schallwelle zeigen. Sie konnten die Welle visuell aufzeichnen.

Erwähnenswert ist, dass das "Visualizer" -Tool, nach dem Sie wahrscheinlich suchen, ein Oszilloskop ist , das Ihre Suche unterstützen kann.
Warrior Bob

Antworten:


52

Sie können ffmpegmithilfe mehrerer Filter Video aus Audio erstellen.


Ahistogramm

Konvertiert Eingangsaudio in einen Videoausgang und zeigt das Lautstärkehistogramm an.

Ahistogramm

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

ahistogramWeitere Optionen und Beispiele finden Sie in der Dokumentation.


aphasemeter

Konvertiert Eingangsaudio in einen Videoausgang und zeigt die Audiophase an.

aphasemeter

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

aphasemeterWeitere Optionen und Beispiele finden Sie in der Dokumentation.


avectorscope

Avectorscope-Filter

Konvertiert Eingangsaudio in einen Videoausgang, der den Audiovektorbereich darstellt.

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

avectorscopeWeitere Optionen und Beispiele finden Sie in der Dokumentation.


showcqt

showcqt filter

Konvertieren Sie Eingangsaudio in einen Videoausgang, der das Frequenzspektrum mit Musiktonskala darstellt.

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

showcqtWeitere Optionen und Beispiele finden Sie in der Dokumentation.


showfreqs

Konvertiert Audioeingänge in Videoausgänge, die das Audio-Leistungsspektrum darstellen. Die Audioamplitude liegt auf der Y-Achse, während die Frequenz auf der X-Achse liegt.

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

showfreqsWeitere Optionen und Beispiele finden Sie in der Dokumentation.


Showspektrum

Showspektrum Bild

Konvertiert Eingangsaudio in einen Videoausgang, der das Audiofrequenzspektrum darstellt.

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

showspectrumWeitere Optionen und Beispiele finden Sie in der Dokumentation.


Showwaves

Showwaves-Filter

Konvertiert Eingangsaudio in einen Videoausgang, der die Sample-Wellen darstellt.

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

showwavesWeitere Optionen und Beispiele finden Sie in der Dokumentation.


Showvolumen

showvolume filter

Konvertiert die Audioeingangslautstärke in einen Videoausgang.

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

showvolumeWeitere Optionen und Beispiele finden Sie in der Dokumentation.


Anmerkungen

  • Weitere Informationen zur Ausgabequalität finden Sie im FFmpeg-Wiki: H.264-Codierungshandbuch .

  • format=yuv420p stellt sicher, dass libx264 ein Pixelformat verwendet, das mit beschissenen Playern wie QuickTime kompatibel ist.

  • Anstatt standardmäßig neu zu kodieren, können Sie das Audiomaterial -c:a copymit Streaming kopieren, wenn Ihr Ausgabe-Container-Format das Audioformat unterstützt. Stellen Sie sich das Kopieren (erneutes Muxen) von Streams wie das Kopieren und Einfügen vor - keine Neucodierung.


Erhalten ffmpeg

Sie sollten immer eine aktuelle Version verwenden, da die Entwicklung sehr aktiv ist. Links zu Builds ffmpegfür Windows, OS X und Linux finden Sie auf der FFmpeg-Download- Seite. Oder Sie folgen einer schrittweisen Anleitung zum Kompilierenffmpeg .


Das OP wird sich wahrscheinlich die anderen Antworten ansehen wollen, die auf After Effects-Tutorials verweisen, aber diese hervorragenden ffmpeg-Beispiele sind wirklich nützlich, um sie hier zu haben. Vielen Dank!
mivk

1
@ LordNeckbeard OP hier. Es ist schon eine Weile her, aber ich bin zurück und das ist eine großartige Antwort.
Ccleve

Ich habe gerade eine Frage erstellt. Superuser.com/questions/1184922/… Wie kann ich ein Hintergrundbild festlegen?
NineCattoRules

6

Adobe After Effects hat einen Visualizer, siehe

Es gibt auch Plugins wie hier für Photoshop.

Viel Glück bei Ihrem Projekt.


4

Ich habe Ihre Frage ganz gut verstanden. Wenn Sie versuchen, ein Wellenformmuster zu erstellen, das sich entsprechend der Tonhöhe und dem Bass Ihres Audios bewegt, können Sie diesen Link ausprobieren.

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

Mit Adobe After Effects können Sie das ganz einfach tun. Sie können mit den Partikeleffekten spielen, um eine solide aussehende Wellenform zu erhalten.

Viel Glück!



3

Nachdem ich die großartige Antwort von LordNeckbeard gelesen hatte, erstellte ich ein kleines Skript, um eine Visualisierung mit ffmpeg und dem Showspectrum-Filter zu erstellen. Ich habe auch eine Upload-Option hinzugefügt, mit der ich direkt auf meinen Remote-Server codieren kann, der eine bessere Verbindung als zu Hause hat, um große Videos hochzuladen. Es wird auch das großartige Skript youtube-upload verwendet !

BEARBEITEN: das direkte Hochladen verlangsamt den Kodierungsprozess erheblich !!

Skript

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

Wenn Sie Zugriff auf After Effects haben, gibt es ein Plugin namens Trapcode Keys , das dies sehr effektiv kann. Die Ergebnisse sehen wirklich gut aus - ich habe es bei vielen Projekten für genau das verwendet, was Sie beschrieben haben, aber es ist nicht billig - 150 USD für sich allein oder 899 USD für die vollständige Trapcode Suite.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.