2017-06-03 4 views
0

Ich habe Forschung versucht, eine Wellenform mit FFMPEG zu erstellen und bin derzeit in der Lage, ein weißes PNG mit der Welle transparent zu erstellen. Ziel ist es, die Welle wie die glatte Welle unten zu erzeugen und das Grau transparent zu machen. ffmpeg wavformFFMPEG, wie man benutzerdefinierte Wellenform erstellt

Hier ist mein aktueller FFMPEG-Wellenformgenerator und -ausgang.

ffmpeg -i ./_test.mp3 -filter_complex \ 
"[0:a]aformat=channel_layouts=mono,compand=gain=-6, \ 
showwavespic=s=450x46:colors=white,negate[a]; \ 
color=white:450x46[c]; \ 
[c][a]alphamerge" -vframes 1 _test.png 

ffmpeg wavform

+0

Kann nicht Bezug endete Bild sehen. – Mulvya

+0

Danke für die heads up @Mulvya. Muss ein Drop-Box-Share-Problem gewesen sein. Sie sollten jetzt Bilder sehen können. –

+0

Ich schlage vor, dass Sie die Ärmel hochkrempeln und etwas eigenen Code selbst schreiben ... Audio ist nur eine Kurve, so dass es überraschend leicht geht ... SO ist für spitze Fragen mit ansprechbaren Lösungen ... Ihre Frage zeigt eine tatsächliche Wellenform unten die einmal mit einem Visualisierungstool wie Audacity ausgestreckt wird, wird schließlich unserem obersten Bild ähnlich erscheinen ... keine Menge an Fudging wird in einem lesen und den anderen erzeugen ... Wenn Sie unseren eigenen Code schreiben, um Audio zu synthetisieren, werden Sie dies schätzen –

Antwort

1

Sie werden nicht in der Lage sein, FFmpeg zu tun, eine, weil die Wellenform nicht mit einer Linie gezeichnet wird, sondern Polygone gefüllt, und zwei, weil FFmpeg Schwierigkeiten zu tun zu haben scheint mit Millisekunde Dauer Audio.

Es wäre wahrscheinlich möglich sein, dies fortgeschritteneren Mathe mit zu tun/Plotten Software wie R, Octave oder matplotlib, aber mein erster Gedanke war, drei kleinere speziellere Dienstprogramme Befehlszeile zu verwenden:

  • SoX zu trimmen , Resampling und eine Audiodatei in einem parseable .dat-Format speichern
  • (grep/sed die .dat-Datei, um aufzuräumen)
  • Gnuplot auf ein Grundstück zu ziehen auf der Grundlage dieser .dat-Datei und als .png
  • speichern Imagemagick die .png so zu modifizieren, dass die aufgezeichnete Linie transparent ist

Im meinem Beispiel Skript Ende wie dieses

# create example file 
sox -n -r 32k -b 16 pnoise.wav synth 10 pinknoise norm -0.1 

# trim/convert 
sox --norm=-1 pnoise.wav test.dat remix 1 trim 5 0.002 rate 200k 

grep -v "^;" test.dat |\ 
    sed -e "s/^[[:space:]]*//" -e "s/[[:space:]]*$//" > test.txt 

# draw plot  
gnuplot 

set term png size 600,200 background "#BBBBBB" 

set output "test.png" 

unset key 
unset border 
unset xtics 
unset ytics 

set margins 0, 0, 0, 0 

set yrange [-1:1] 

plot "test.txt" with lines lt rgb "#FF0000" lw 3 

exit 

# replace red opaque with fully transparent 
mogrify -channel rgba -matte -fill "#FF000000" -opaque "#FF0000" test.png 

enter image description here

+0

Danke für die Antwort. Ich habe mir einen Wavesurfer angeschaut, den ich jetzt ausbreche und eine individuelle Lösung erstelle. –

Verwandte Themen