MP3 收音机流缓冲区欠载检测
MP3 radio Stream buffer underrun detection
通过 linux 上的脚本检测 mp3 广播流正在中断的任何指针,当互联网连接变慢并导致客户端流停止,缓冲,然后播放。
有几种方法可以做到这一点。
方法 1:假设恒定比特率
如果您知道比特率将保持不变,则可以在服务器上随时间测量该比特率并确定它何时减慢到阈值以下。请注意,这不是最准确的方法,并不总是有效。并非所有流都使用恒定比特率。但是,这种方法就像计算通过网络接收到的字节数一样简单。
方法二:服务器回放
您可以 运行 服务器上的无头播放器(通过 cvlc
或类似方式)并跟踪它何时有缓冲区 运行s。这将适用于任何比特率,并且会让您对客户端上发生的事情有一个很好的了解。这种播放器设置还可以启用静音检测等实用功能。缺点是解码需要一点 CPU,而自动化需要更多的努力。
方法 3(首选):源上的日志输出缓冲区
您的源编码器将在其输出上有一个缓冲区,等待发送到服务器的数据。当此缓冲区增长超过特定阈值时,将其记录下来。这意味着无论出于何种原因,网络输出都会停止。此方法直接从源头获取适当的数据,并确保您不必担心在监控音频流时可能随时间推移发生的时钟同步问题。 (编码器的 44.1 kHz 可能是播放器的 44.101 kHz。)此方法可能需要修改源客户端。
通过 linux 上的脚本检测 mp3 广播流正在中断的任何指针,当互联网连接变慢并导致客户端流停止,缓冲,然后播放。
有几种方法可以做到这一点。
方法 1:假设恒定比特率
如果您知道比特率将保持不变,则可以在服务器上随时间测量该比特率并确定它何时减慢到阈值以下。请注意,这不是最准确的方法,并不总是有效。并非所有流都使用恒定比特率。但是,这种方法就像计算通过网络接收到的字节数一样简单。
方法二:服务器回放
您可以 运行 服务器上的无头播放器(通过 cvlc
或类似方式)并跟踪它何时有缓冲区 运行s。这将适用于任何比特率,并且会让您对客户端上发生的事情有一个很好的了解。这种播放器设置还可以启用静音检测等实用功能。缺点是解码需要一点 CPU,而自动化需要更多的努力。
方法 3(首选):源上的日志输出缓冲区
您的源编码器将在其输出上有一个缓冲区,等待发送到服务器的数据。当此缓冲区增长超过特定阈值时,将其记录下来。这意味着无论出于何种原因,网络输出都会停止。此方法直接从源头获取适当的数据,并确保您不必担心在监控音频流时可能随时间推移发生的时钟同步问题。 (编码器的 44.1 kHz 可能是播放器的 44.101 kHz。)此方法可能需要修改源客户端。