¿Cómo convierto el audio en video (es decir, mostrar las formas de onda en un video)?

32

Tengo que crear un video. Parte de esto implica "mostrar" una entrevista de radio. En lugar de solo tener una pantalla en negro y escuchar el audio, me gustaría tener una forma de onda variable en la pantalla y un título.

¿Hay alguna herramienta gratuita o barata que pueda usar que haga esto?


Si le pido a un amigo que lo haga, ¿hay algo en Adobe Creative Suite que pueda hacer el trabajo?

ccleve
fuente
Audacity debería mostrarte la onda de sonido; podrías grabar, visualmente, la ola.
Vale la pena mencionar que la herramienta de "visualizador" que probablemente esté buscando es un osciloscopio , que puede informar su búsqueda.
Guerrero Bob

Respuestas:

52

Puede usar ffmpegpara crear video desde audio usando varios filtros.


ahistograma

Convierta el audio de entrada a una salida de video, mostrando el histograma de volumen.

ahistograma

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

Consulte la ahistogramdocumentación para obtener más opciones y ejemplos.


afasemetro

Convierta el audio de entrada a una salida de video, mostrando la fase de audio.

afasemetro

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

Consulte la aphasemeterdocumentación para obtener más opciones y ejemplos.


avectorscope

filtro avectorscope

Convierta el audio de entrada a una salida de video, que representa el alcance del vector de 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]"

Consulte la avectorscopedocumentación para obtener más opciones y ejemplos.


showcqt

filtro showcqt

Convierta el audio de entrada a una salida de video que represente el espectro de frecuencia con escala de tonos musicales.

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

Consulte la showcqtdocumentación para obtener más opciones y ejemplos.


showfreqs

Convierta el audio de entrada a la salida de video que representa el espectro de potencia de audio. La amplitud de audio está en el eje Y mientras que la frecuencia está en el eje 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]"

Consulte la showfreqsdocumentación para obtener más opciones y ejemplos.


espectro

imagen del espectro

Convierta el audio de entrada a una salida de video, que representa el espectro de frecuencia de 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]"

Consulte la showspectrumdocumentación para obtener más opciones y ejemplos.


showwaves

filtro de showwaves

Convierta el audio de entrada a una salida de video, que representa las ondas de las muestras.

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

Consulte la showwavesdocumentación para obtener más opciones y ejemplos.


showvolume

showvolume filter

Convierta el volumen de audio de entrada a una salida de 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]"

Consulte la showvolumedocumentación para obtener más opciones y ejemplos.


Notas

  • Consulte FFmpeg Wiki: Guía de codificación H.264 para obtener información más detallada sobre la calidad de salida.

  • format=yuv420p se asegura de que libx264 use un formato de píxeles que sea compatible con reproductores defectuosos como QuickTime.

  • En lugar de volver a codificar de manera predeterminada, puede usar -c:a copypara copiar y copiar el audio si el formato del contenedor de salida es compatible con el formato de audio. Piense en la copia de transmisión (re-muxing) como copiar y pegar, sin volver a codificar.


Obtener ffmpeg

Siempre debe usar una versión reciente ya que el desarrollo es muy activo. Los enlaces a las compilaciones de ffmpegWindows, OS X y Linux están disponibles en la página de descarga de FFmpeg . O puede seguir una guíaffmpeg paso a paso para compilar .

lema
fuente
El OP probablemente querrá ver las otras respuestas que enlazan con los tutoriales de After Effects, pero estos excelentes ejemplos de ffmpeg son realmente útiles para tener aquí. ¡Gracias!
mivk
1
@LordNeckbeard OP aquí. Ha pasado un tiempo, pero he vuelto, y esta es una gran respuesta.
ccleve
Acabo de crear una pregunta superuser.com/questions/1184922/… ¿Cómo puedo configurar una imagen de fondo?
NineCattoRules
6

Adobe After Effects tiene un visualizador, vea

También hay complementos como aquí para Photoshop.

Buena suerte con tu proyecto.


fuente
4

Entendí tu pregunta bastante bien. Si está intentando hacer un patrón de forma de onda que se mueva de acuerdo con el tono y el bajo de su audio, puede probar este enlace.

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

Adobe After Effects te permite hacerlo fácilmente. Puede tocar junto con los efectos de partículas para obtener una forma de onda más sólida.

¡Buena suerte!


fuente
3

Después de leer la gran respuesta de LordNeckbeard, creé un pequeño script para hacer una visualización con ffmpeg y el filtro showspectrum. También agregué una opción de carga para codificar directamente en mi servidor remoto que tiene una mejor conexión que en casa para cargar videos grandes. ¡También usa el gran script youtube-upload !

EDITAR: ¡ cargar directamente ralentiza significativamente el proceso de codificación!

Guión

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

Mighty Dread
fuente
0

Si tiene acceso a After Effects, hay un complemento llamado Trapcode Keys que puede hacerlo de manera muy efectiva. Los resultados se ven muy bien: lo he usado en muchos proyectos exactamente para lo que ha descrito, pero no es barato: $ 150 por sí mismo o $ 899 para el conjunto completo de Trapcode.

tomh
fuente