GStreamer の audiovisualizers
GStreamer の音声可視化ツールとして audiovisualizers があります。以前 spectrascope を紹介しましたが、これは audiovisualizers に含まれています。
$ gst-inspect-1.0 audiovisualizers Plugin Details: Name: audiovisualizers Description: Creates video visualizations of audio input Filename: /usr/lib/gstreamer-1.0/libgstaudiovisualizers.so Version: 1.0.0 License: GPL Source module: gst-plugins-bad Source release date: 2012-09-24 Binary package: GStreamer Bad Plug-ins source release Origin URL: Unknown package origin wavescope: Waveform oscilloscope synaescope: Synaescope spectrascope: Frequency spectrum scope spacescope: Stereo visualizer 4 features: +-- 4 elements
gst-plugins-bad ということなので、品質は…ということもありますが、 wavescope synaescope spectrascope spacescope の4つが使えるようです。audiotestsrc で波形を作り、 audiovisualizers のフィルタで加工し、 autovideosink で表示してみます。 audiovisualizers の出力用 Pad の Capabilities を見ると、video/x-raw になっていて、このまま autovideosink につなぐと
:audiotestsrc0: streaming task paused, reason not-negotiated (-4) ERROR: pipeline doesn't want to preroll.
なんてエラーが出るので、autovideosink の前に、万能変換器 videoconvert をつなぎます。audiotestsrc 側でエラーになる原因は、よくわかりませんが。。。
では、pink-noise を可視化するサンプルです。
$ gst-launch-1.0 audiotestsrc wave=pink-noise ! wavescope ! videoconvert ! autovideosink
特に難しいところはありませんでした。wavescope を synaescope に変えたりすると、表示が変わります。wavescope でオシロスコープのようにトリガーがかけれると波形が見やすくなりますし、spectrascope のX軸がオクターブ分割されていると直感的にフィルタの選択ができるのですが、そこまでの機能は無いようなので、細かいところは自分で作らないとダメっぽいですね。