如何使用 GStreamer 的电平插件获取特定音频文件的峰值和有效值

How to use level plugin of GStreamer to get peak and rms value of a particular audio file

我想检测特定音频文件的峰值和均方根值(格式可以是.opus、.wav 等,也可以从麦克风输入而不录制语音)。使用 GStreamer 的好 'level' 插件我可以做到这一点。

我尝试了这里提供的示例,level_plugin_example

我也试过命令行示例,

$ gst-launch-1.0 -v -m audiotestsrc ! audioconvert ! audio/x-raw,format=S8,channels=2 ! level ! fakesink silent=TRUE

$ gst-launch-1.0 -v -m audiotestsrc ! volume volume=1.0 ! level ! fakesink silent=TRUE

这些给出了空值和峰值。

通过这些示例,我了解了如何使用关卡。但问题是,在示例中,他们使用了 caps 来设置原始媒体(内部是否做了任何事情来获取关卡插件的输出?)但我想要用户定义的媒体输入,那么如何实现呢?

总结:我想要一个 'level' 插件的示例代码片段,它将输入作为录制的音频或实时音频文件并检测其 rms 和峰值。

"level"元素发送消息。用法示例可以在 link 上找到(gstreamer 示例): https://github.com/krad-radio/gstreamer-plugins-good-krad/blob/master/tests/examples/level/level-example.c

尝试使用:

gst-launch -v -m  filesrc location=audioandsilence.wav ! decodebin ! audioconvert ! level message=TRUE ! pulsesink