Vb.net 如何检测WMA流缓冲区中的音频静音?
我希望你能帮我用VB.NET编写一个程序 我有一个标准的WMA流,通过互联网不断地流进来。我需要编写一个应用程序来流式传输此音频,并查找任何“静默”时段。当它检测到静默时,它运行一个事件 为此,静音被定义为三秒钟的零电平音频。从技术上讲,这股水流一直在流动,但没有声音通过它 但是,我希望程序在静默仍在“缓冲区”中时检测静默。也就是说,在程序检测到静音之前,用户不会听到这种静音 音频不应该停止,因为它正在分析这种静音-它需要不断地向用户播放音频 我愿意使用任何合适的API,比如BASS,或者内置在dot net平台中的Windows Media扩展Vb.net 如何检测WMA流缓冲区中的音频静音?,vb.net,audio-streaming,Vb.net,Audio Streaming,我希望你能帮我用VB.NET编写一个程序 我有一个标准的WMA流,通过互联网不断地流进来。我需要编写一个应用程序来流式传输此音频,并查找任何“静默”时段。当它检测到静默时,它运行一个事件 为此,静音被定义为三秒钟的零电平音频。从技术上讲,这股水流一直在流动,但没有声音通过它 但是,我希望程序在静默仍在“缓冲区”中时检测静默。也就是说,在程序检测到静音之前,用户不会听到这种静音 音频不应该停止,因为它正在分析这种静音-它需要不断地向用户播放音频 我愿意使用任何合适的API,比如BASS,或者内置在
谢谢如果你有PCM数据,你可以平均取几个样本,如果它低于阈值,就认为它是静默的。我假设如果你正在播放音频,你可以访问未压缩的数据
不幸的是,我不知道WMA编解码器的细节,但我认为最简单的方法是只取几个样本的平均值。好吧,我在我的产品中正是这样做的:捕获多个互联网音频流并解码到PCM,然后对它们执行各种分析,其中一个是静音检测 如果您想自己创建类似的内容,请从以下位置使用Windows Media Format SDK for.net: 然后,使用IWMReader,它的OnSample回调将为您提供PCM数据 然后,计算小缓冲区的最大输入电平,观察该电平3秒钟,如果它低于您的阈值,则触发一个事件