我已经做过研究,试图用FFMPEG创建一个波形,我现在能够创建一个白色的png,波形是透明的。目标是生成波浪,如下面的平滑波,并使灰色透明。
这是我当前的FFMPEG波形发生器和输出。
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
答案 0 :(得分:2)
你不能在FFmpeg中做到这一点,一个是因为波形不是用线绘制的,而是填充多边形,两个因为FFmpeg似乎在处理毫秒持续时间的音频时遇到了麻烦。 / p>
使用更高级的数学/绘图软件(如R,Octave或matplotlib)可能会这样做,但我首先想到的是使用三个更小的更专业的命令行实用程序:
最后,我的示例脚本最终像这样
# 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