Comment convertir le son en vidéo (c'est-à-dire montrer les formes d'onde dans une vidéo)?

32

Je dois créer une vidéo. Cela implique en partie de "montrer" une interview à la radio. Plutôt que de simplement avoir un écran noir et d'écouter l'audio, j'aimerais plutôt avoir une forme d'onde variable sur l'écran et une légende.

Y at-il un outil gratuit ou bon marché que je peux utiliser pour le faire?


Si je demande à un ami de le faire, y a-t-il quelque chose dans Adobe Creative Suite qui peut faire le travail?

ccleve
la source
Audacity devrait vous montrer l'onde sonore; vous pouvez enregistrer - visuellement - la vague.
Il est à noter que l'outil de "visualisation" que vous recherchez est probablement un oscilloscope , qui peut éclairer votre recherche.
Warrior Bob

Réponses:

52

Vous pouvez utiliser ffmpegpour créer une vidéo à partir de l'audio en utilisant plusieurs filtres.


ahistogramme

Convertir l'audio d'entrée en une sortie vidéo, en affichant l'histogramme du volume.

ahistogramme

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

Voir la ahistogramdocumentation pour plus d'options et d'exemples.


aphasemeter

Convertir l'audio d'entrée en une sortie vidéo, affichant la phase audio.

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

Voir la aphasemeterdocumentation pour plus d'options et d'exemples.


avectorscope

filtre avectorscope

Convertir l'audio d'entrée en une sortie vidéo, représentant la portée du vecteur 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]"

Voir la avectorscopedocumentation pour plus d'options et d'exemples.


showcqt

filtre de démonstration

Convertissez l'audio d'entrée en une sortie vidéo représentant le spectre de fréquence avec une échelle de tonalité musicale.

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

Voir la showcqtdocumentation pour plus d'options et d'exemples.


showfreqs

Convertissez l'audio d'entrée en sortie vidéo représentant le spectre de puissance audio. L'amplitude audio est sur l'axe des Y alors que la fréquence est sur l'axe des 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]"

Voir la showfreqsdocumentation pour plus d'options et d'exemples.


Spectacle Spectacle

showpectrum image

Convertir l'audio d'entrée en une sortie vidéo, représentant le spectre de fréquence 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]"

Voir la showspectrumdocumentation pour plus d'options et d'exemples.


showwaves

filtre showwaves

Convertir l'audio d'entrée en une sortie vidéo, représentant les échantillons d'échantillons.

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

Voir la showwavesdocumentation pour plus d'options et d'exemples.


showvolume

filtre showvolume

Convertir le volume audio en entrée en sortie vidéo.

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

Voir la showvolumedocumentation pour plus d'options et d'exemples.


Remarques

  • Voir FFmpeg Wiki: H.264 Encoding Guide pour des informations plus détaillées sur la qualité de la sortie.

  • format=yuv420p s'assure que libx264 utilise un format de pixel compatible avec des lecteurs de mauvaise qualité tels que QuickTime.

  • Au lieu de ré-encoder par défaut, vous pouvez utiliser -c:a copypour copier en continu l'audio si votre format de conteneur de sortie prend en charge le format audio. Pensez à la copie de flux (re-muxing) comme un copier-coller - pas de ré-encodage.


Obtenir ffmpeg

Vous devriez toujours utiliser une version récente car le développement est très actif. Les liens vers les versions de ffmpegWindows, OS X et Linux sont disponibles sur la page de téléchargement de FFmpeg . Ou vous pouvez suivre un guideffmpeg étape par étape pour compiler .

llogan
la source
Le PO voudra probablement examiner les autres réponses qui renvoient aux didacticiels d’After Effects, mais ces excellents exemples ffmpeg sont vraiment utiles. Merci!
mardi
1
@ LordNeckbeard OP ici. Cela fait longtemps, mais je suis de retour et c'est une excellente réponse.
Ccleve
Je viens de créer une question superuser.com/questions/1184922/… Comment définir une image d'arrière-plan?
NineCattoRules
6

Adobe After Effects possède un visualiseur, voir

Il existe également des plugins comme ici pour Photoshop.

Bonne chance pour votre projet.


la source
4

J'ai très bien compris votre question. Si vous essayez de créer un motif de forme d’onde qui se déplace en fonction de la hauteur et des basses de votre audio, vous pouvez essayer ce lien.

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

Adobe After Effects vous permet de le faire facilement. Vous pouvez jouer avec les effets de particules pour obtenir une forme d’onde plus solide.

Bonne chance!


la source
3

Après avoir lu l'excellente réponse de LordNeckbeard, j'ai ensuite créé un petit script pour créer une visualisation avec ffmpeg et le filtre showspectrum. J'ai également ajouté une option de téléchargement permettant de coder directement sur mon serveur distant, qui offre une meilleure connexion que chez moi pour télécharger de grandes vidéos. Il utilise également le grand script youtube-upload !

EDIT: le téléchargement directement ralentit considérablement le processus de codage !!

Scénario

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

Puissante peur
la source
0

Si vous avez accès à After Effects, il existe un plug-in appelé Trapcode Keys qui peut le faire très efficacement. Les résultats sont vraiment intéressants - je l'ai utilisé dans de nombreux projets pour exactement ce que vous avez décrit, mais ce n'est pas bon marché - 150 USD par lui-même ou 899 USD pour la suite complète Trapcode.

tomh
la source