Icecast2:挂载点在浏览器播放时长时间缓冲

Icecast2: Mountpoint buffers at browser playback for a long time

当我尝试在浏览器播放器或直接通过访问挂载点播放我的 icecast 流时,它会持续长达一到两分钟,直到我听到任何声音。 icecast 的哪个设置会影响这种行为?我的服务器硬件不可能是原因。此外,该问题仅影响浏览器 - 桌面播放器没有缓冲时间。当我使用 shoutcast 时,所有网络播放器都会及时加载。

<icecast>
  <location>Earth</location>
  <admin>mail@test.test</admin>
  <limits>
    <clients>200</clients>
    <sources>3</sources>
    <threadpool>5</threadpool>
    <queue-size>524288</queue-size>
    <client-timeout>20</client-timeout>
    <header-timeout>15</header-timeout>
    <source-timeout>60</source-timeout>
            <burst-on-connect>0</burst-on-connect>
            <burst-size>65535</burst-size>
  </limits>

  <authentication>
            <source-password>hackme</source-password>
            <relay-password>hackme</relay-password>
            <admin-user>admin</admin-user>
    <admin-password>hackme</admin-password>
  </authentication>

      <!-- {%comment-open-if:icecast.directory.yp-url==""%} -->
  <directory>
    <yp-url-timeout>15</yp-url-timeout>
    <yp-url>http://yp.shoutcast.com</yp-url>
  </directory>
  <directory>
        <yp-url-timeout>15</yp-url-timeout>
        <yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url>
    </directory>
   <directory>
        <yp-url-timeout>15</yp-url-timeout>
    <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url>
  </directory>
  <!-- {%comment-close-if:icecast.directory.yp-url==""%} -->

      <hostname>test.test</hostname>
      <port>8008</port>
  <bind-address>1.1.1.1</bind-address>

  <!-- Only define a <mount> section if you want to use advanced options,
         like alternative usernames or passwords -->
      <mount>
    <bitrate>128</bitrate>
    <mount-name>/mp3</mount-name>
    <fallback-override>0</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <public>1</public>
    <max-listeners>150</max-listeners>
    <fallback-mount></fallback-mount>
    <genre>alternative</genre>
    <type>audio/mpeg</type>
  </mount>

  <mount>
    <bitrate>64</bitrate>
    <mount-name>/mobile</mount-name>
    <fallback-override>0</fallback-override>
    <fallback-when-full>0</fallback-when-full>
    <public>1</public>
    <max-listeners>50</max-listeners>
    <fallback-mount></fallback-mount>
  </mount>

  <fileserve>1</fileserver>

      <paths>
            <basedir>/usr/local/centovacast/var/vhosts/tester/</basedir>
            <logdir>var/log/</logdir>
    <webroot>web/</webroot>
    <adminroot>admin/</adminroot>
    <pidfile>var/run/server.pid</pidfile>
            <alias source="/" dest="/status.xsl"></alias>
  </paths>

  <logging>
    <accesslog>access.log</accesslog>
    <errorlog>error.log</errorlog>
    <playlistlog>playlist.log</playlistlog>
    <loglevel>2</loglevel>
    <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
      </logging>

  <security>
    <chroot>0</chroot>
      </security>

</icecast>

流式传输 MP3 时,它被任意分段并按原样发送。也就是说,Icecast 不对帧进行任何检查或对齐,这意味着在客户端重新同步到具有小缓冲区的服务器时可能会有轻微的延迟。

但是,一分钟的延迟都是非常长的时间。 LAME(我认为是 3.99.1?)存在问题,它正在创建 Chrome 难以同步的流。你没有提到你使用的是什么编码器,但如果它使用的是 LAME,请尝试升级或降级版本。如果您正在使用其他东西,请尝试切换到 LAME。此外,尝试不同的浏览器,看看您是否在 Chrome.

中遇到此问题

基于 HTTP 的渐进式 MP3(与您的设置相同)是最常见的网络广播形式,如果设置正确,它可以很好地工作。

尝试增加队列大小和突发大小:

<queue-size>1048576</queue-size>
<burst-size>943718</burst-size>

我解释不清楚,但你可以关注这个帖子:https://www.internet-radio.com/community/threads/very-slow-buffering-in-android.20139/