Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何检测WMA流缓冲区中的音频静音?_Vb.net_Audio Streaming - Fatal编程技术网

Vb.net 如何检测WMA流缓冲区中的音频静音?

Vb.net 如何检测WMA流缓冲区中的音频静音?,vb.net,audio-streaming,Vb.net,Audio Streaming,我希望你能帮我用VB.NET编写一个程序 我有一个标准的WMA流,通过互联网不断地流进来。我需要编写一个应用程序来流式传输此音频,并查找任何“静默”时段。当它检测到静默时,它运行一个事件 为此,静音被定义为三秒钟的零电平音频。从技术上讲,这股水流一直在流动,但没有声音通过它 但是,我希望程序在静默仍在“缓冲区”中时检测静默。也就是说,在程序检测到静音之前,用户不会听到这种静音 音频不应该停止,因为它正在分析这种静音-它需要不断地向用户播放音频 我愿意使用任何合适的API,比如BASS,或者内置在

我希望你能帮我用VB.NET编写一个程序

我有一个标准的WMA流,通过互联网不断地流进来。我需要编写一个应用程序来流式传输此音频,并查找任何“静默”时段。当它检测到静默时,它运行一个事件

为此,静音被定义为三秒钟的零电平音频。从技术上讲,这股水流一直在流动,但没有声音通过它

但是,我希望程序在静默仍在“缓冲区”中时检测静默。也就是说,在程序检测到静音之前,用户不会听到这种静音

音频不应该停止,因为它正在分析这种静音-它需要不断地向用户播放音频

我愿意使用任何合适的API,比如BASS,或者内置在dot net平台中的Windows Media扩展


谢谢
不幸的是,我不知道WMA编解码器的细节,但我认为最简单的方法是只取几个样本的平均值。

好吧,我在我的产品中正是这样做的:捕获多个互联网音频流并解码到PCM,然后对它们执行各种分析,其中一个是静音检测

如果您想自己创建类似的内容,请从以下位置使用Windows Media Format SDK for.net:

然后,使用IWMReader,它的OnSample回调将为您提供PCM数据

然后,计算小缓冲区的最大输入电平,观察该电平3秒钟,如果它低于您的阈值,则触发一个事件