Come posso trasformare l'audio in video (ovvero mostrare le forme d'onda in un video)?


32

Devo creare un video. Parte di ciò implica "mostrare" un'intervista radiofonica. Piuttosto che avere solo una schermata nera e ascoltare l'audio, mi piacerebbe avere una forma d'onda variabile sullo schermo e una didascalia.

Esiste uno strumento gratuito o economico che posso usare per farlo?


Se chiedo a un amico di farlo, c'è qualcosa in Adobe Creative Suite che può fare il lavoro?


Audacity dovrebbe mostrarti l'onda sonora; potresti registrare - visivamente - l'onda.

Vale la pena ricordare che lo strumento "visualizzatore" che probabilmente stai cercando è un oscilloscopio , che può informare la tua ricerca.
Warrior Bob,

Risposte:


52

È possibile utilizzare ffmpegper creare video dall'audio utilizzando diversi filtri.


ahistogram

Converti l'audio in ingresso in un'uscita video, visualizzando l'istogramma del volume.

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

Vedere la ahistogramdocumentazione per ulteriori opzioni ed esempi.


aphasemeter

Converti l'audio in ingresso in un'uscita video, visualizzando la fase 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]"

Vedere la aphasemeterdocumentazione per ulteriori opzioni ed esempi.


avectorscope

filtro avectorcope

Converti l'audio in ingresso in un'uscita video, che rappresenta l'ambito del vettore 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]"

Vedere la avectorscopedocumentazione per ulteriori opzioni ed esempi.


showcqt

filtro showcqt

Converti l'audio in ingresso in un'uscita video che rappresenta lo spettro di frequenza con scala dei toni musicali.

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

Vedere la showcqtdocumentazione per ulteriori opzioni ed esempi.


showfreqs

Converti l'audio in ingresso in uscita video che rappresenta lo spettro di potenza audio. L'ampiezza dell'audio è sull'asse Y mentre la frequenza è sull'asse 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]"

Vedere la showfreqsdocumentazione per ulteriori opzioni ed esempi.


showspectrum

mostra l'immagine dello spettro

Converti l'audio in ingresso in un'uscita video, che rappresenta lo spettro delle frequenze 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]"

Vedere la showspectrumdocumentazione per ulteriori opzioni ed esempi.


showwaves

filtro showwaves

Converti l'audio in ingresso in un'uscita video, che rappresenta le onde campione.

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

Vedere la showwavesdocumentazione per ulteriori opzioni ed esempi.


showvolume

mostra filtro

Converti il ​​volume dell'audio in ingresso in un'uscita video.

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

Vedere la showvolumedocumentazione per ulteriori opzioni ed esempi.


Gli appunti

  • Vedi FFmpeg Wiki: Guida alla codifica H.264 per informazioni più dettagliate sulla qualità dell'output.

  • format=yuv420p si assicura che libx264 utilizzi un formato pixel compatibile con i giocatori schifosi come QuickTime.

  • Invece di ricodificare per impostazione predefinita, è possibile utilizzare -c:a copyper eseguire lo streaming della copia dell'audio se il formato del contenitore di output supporta il formato audio. Pensa alla copia in streaming (re-muxing) come una copia e incolla - nessuna ricodifica.


Ottenere ffmpeg

Dovresti sempre usare una versione recente poiché lo sviluppo è molto attivo. I collegamenti alle build di ffmpegWindows, OS X e Linux sono disponibili nella pagina di download di FFmpeg . Oppure puoi seguire una guidaffmpeg passo-passo per compilare .


L'OP probabilmente vorrà guardare le altre risposte che si collegano ai tutorial di After Effects, ma questi eccellenti esempi di ffmpeg sono davvero utili da avere qui. Grazie!
mivk,

1
@LordNeckbeard OP qui. È passato un po 'di tempo, ma sono tornato e questa è un'ottima risposta.
ccleve,

Ho appena creato una domanda superuser.com/questions/1184922/… Come posso impostare un'immagine di sfondo?
NineCattoRules

6

Adobe After Effects ha un visualizzatore, vedi

Ci sono anche plugin come qui per Photoshop.

Buona fortuna con il vostro progetto.


4

Ho capito abbastanza bene la tua domanda. Se stai provando a creare un modello di forma d'onda che si sposta in base all'intonazione e ai bassi del tuo audio, puoi provare questo link.

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

Adobe After Effects ti consente di farlo facilmente. Puoi giocare con gli effetti particellari per ottenere una forma d'onda dall'aspetto più solido.

In bocca al lupo!



3

Dopo aver letto la grande risposta di LordNeckbeard, ho continuato a creare una piccola sceneggiatura per creare una visualizzazione con ffmpeg e il filtro showspectrum. Ho anche aggiunto un'opzione di caricamento per me stesso per codificare direttamente sul mio server remoto che ha una connessione migliore rispetto a casa per caricare video di grandi dimensioni. Utilizza anche il fantastico script youtube-upload !

EDIT: il caricamento direttamente rallenta in modo significativo il processo di codifica !!

copione

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

Se hai accesso ad After Effects, c'è un plugin chiamato Trapcode Keys che può farlo in modo molto efficace. I risultati sembrano davvero belli - l'ho usato su molti progetti esattamente per quello che hai descritto, ma non è economico - $ 150 da solo o $ 899 per la suite Trapcode completa.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.