【问题标题】:Get bitrate from shoutcast从直播中获取比特率
【发布时间】:2013-04-11 16:34:24
【问题描述】:

要从广播中获取比特率,人们习惯于从元数据标头中获取比特率,如下例所示:

icy-notice1: This stream requires 
<A href="http://www.winamp.com/" target=_blank>Winamp</A> 

icy-notice2: SHOUTcast Distributed Network Audio Server/Linux v1.9.5

icy-name: RadioABF.net - Paris Electro Spirit Live From FRANCE

icy-genre: Techno House Electronic

icy-url: <A href="http://www.radioabf.net/" target=blank>http://www.radioabf.net/</A>

content-type: audio/mpeg
icy-pub: 1

icy-metaint: 32768


icy-br: 160

但有些广播不提供此信息

我的问题是如何从直播中获取比特率?

【问题讨论】:

    标签: c# audio http-live-streaming shoutcast


    【解决方案1】:

    获得比特率的唯一真正方法是解码音频流。

    虽然 SHOUTcast 服务器在其标头中给出了此提示,但不能保证其准确无误,因为比特率可能会发生变化。如您所见,通过 HTTP 发送流的其他服务器并不总是遵循 SHOUTcast 所做的标头模式。

    您也不能简单地衡量接收数据的速度,因为许多服务器最初会发送大缓冲区来填充客户端缓冲区并测试连接速度。

    如果您无法解码流,许多编解码器会将该比特率放入其帧头中。对于 MPEG,the first four bits of the third byte in the frame header give you the bitrate

    【讨论】:

    • 可变比特率流使这更加复杂。抽查不会告诉您平均或最大比特率,这可能是最有趣的。
    【解决方案2】:

    Shoutcast V1 有一个包含比特率(和其他)信息的特殊页面。 假设您的广播正在运行 http://some-streaming-server:8000 那么这个页面网址将是: http://some-streaming-server:8000/7.html

    该页面的正文如下所示:

     <HTML><meta http-equiv="Pragma" content="no-cache"></head<body>4,1,36,80,4,64,Artist - title</body></html>
    

    用逗号分割文本,你会得到:

    • 当前听众
    • 流状态
    • 听众高峰
    • 最大监听数(从服务器开始)
    • 独特的听众
    • 比特率
    • 歌曲名称

    【讨论】:

      猜你喜欢
      • 2015-02-05
      • 1970-01-01
      • 2023-03-04
      • 2015-08-04
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-12-17
      • 2015-02-17
      相关资源
      最近更新 更多