Como transformar áudio em vídeo (ou seja, mostrar as formas de onda em um vídeo)?


32

Eu tenho que criar um vídeo. Parte disso envolve "mostrar" uma entrevista de rádio. Em vez de apenas ter uma tela preta e ouvir o áudio, eu gostaria de ter uma forma de onda variável na tela e uma legenda.

Existe alguma ferramenta gratuita ou barata que eu possa usar que faça isso?


Se eu pedir a um amigo, existe alguma coisa no Adobe Creative Suite que possa fazer o trabalho?


O Audacity deve mostrar a onda sonora; você pode gravar visualmente a onda.

Vale ressaltar que a ferramenta "visualizador" que você provavelmente está procurando é um osciloscópio , que pode informar sua pesquisa.
Warrior Bob

Respostas:


52

Você pode usar ffmpegpara criar vídeo a partir de áudio usando vários filtros.


ahistogram

Converta o áudio de entrada em uma saída de vídeo, exibindo o histograma de 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]"

Veja a ahistogramdocumentação para mais opções e exemplos.


afasemeter

Converta o áudio de entrada em uma saída de vídeo, exibindo a fase de áudio.

afasemeter

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

Veja a aphasemeterdocumentação para mais opções e exemplos.


avectorscope

filtro avectorscope

Converta o áudio de entrada em uma saída de vídeo, representando o escopo do vetor de áudio.

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

Veja a avectorscopedocumentação para mais opções e exemplos.


showcqt

filtro showcqt

Converta o áudio de entrada em uma saída de vídeo representando o espectro de frequência com a escala de tons musicais.

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

Veja a showcqtdocumentação para mais opções e exemplos.


showfreqs

Converta áudio de entrada em saída de vídeo representando o espectro de potência de áudio. A amplitude do áudio está no eixo Y, enquanto a frequência está no eixo 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]"

Veja a showfreqsdocumentação para mais opções e exemplos.


espetáculo

imagem showspectrum

Converta o áudio de entrada em uma saída de vídeo, representando o espectro de frequência de áudio.

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

Veja a showspectrumdocumentação para mais opções e exemplos.


ondas de show

filtro de ondas de show

Converta o áudio de entrada em uma saída de vídeo, representando as ondas de amostra.

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

Veja a showwavesdocumentação para mais opções e exemplos.


showvolume

filtro showvolume

Converta o volume do áudio de entrada em uma saída de vídeo.

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

Veja a showvolumedocumentação para mais opções e exemplos.


Notas

  • Consulte a Wiki do FFmpeg: Guia de codificação H.264 para obter informações mais detalhadas sobre a qualidade da saída.

  • format=yuv420p garante que a libx264 use um formato de pixel compatível com players de baixa qualidade como o QuickTime.

  • Em vez de recodificar por padrão, você pode usar -c:a copypara transmitir o fluxo de cópia de áudio se o formato do contêiner de saída suportar o formato de áudio. Pense na cópia em fluxo (re-muxing) como copiar e colar - sem recodificação.


Obter ffmpeg

Você deve sempre usar uma versão recente, pois o desenvolvimento é muito ativo. Links para compilações do ffmpegWindows, OS X e Linux estão disponíveis na página de download do FFmpeg . Ou você pode seguir um guiaffmpeg passo a passo para compilar .


O OP provavelmente desejará examinar as outras respostas relacionadas aos tutoriais do After Effects, mas esses excelentes exemplos de ffmpeg são realmente úteis aqui. Obrigado!
Mivk

1
@LordNeckbeard OP aqui. Já faz um tempo, mas estou de volta, e esta é uma ótima resposta.
ccleve

Acabei de criar uma pergunta superuser.com/questions/1184922/… Como posso definir uma imagem de plano de fundo?
NineCattoRules

6

O Adobe After Effects possui um visualizador, consulte

Também existem plugins como o aqui para o Photoshop.

Boa sorte com seu projeto.


4

Eu entendi sua pergunta muito bem. Se você estiver tentando criar um padrão de forma de onda que se mova de acordo com a afinação e o baixo do áudio, tente este link.

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

O Adobe After Effects permite fazer isso facilmente. Você pode tocar junto com os efeitos das partículas para obter uma forma de onda com aparência mais sólida.

Boa sorte!



3

Depois de ler a ótima resposta de LordNeckbeard, criei um pequeno script para fazer uma visualização com ffmpeg e o filtro showspectrum. Também adicionei uma opção de upload para codificar diretamente no meu servidor remoto que possui uma conexão melhor do que em casa para enviar vídeos grandes. Ele também usa o ótimo script youtube-upload !

EDIT: carregar diretamente diminui significativamente o processo de codificação !!

Roteiro

#!/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 você tiver acesso ao After Effects, existe um plug-in chamado Trapcode Keys que pode fazer isso de maneira muito eficaz. Os resultados parecem realmente bons - usei-o em muitos projetos exatamente para o que você descreveu, mas não é barato - US $ 150 por si só ou US $ 899 para o Trapcode Suite completo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.