Icecast http连接延迟超过30秒

时间:2017-02-19 18:49:29

标签: html5-audio audio-streaming icecast

我正在运行一个icecast服务器(2.4.3)并经历了很长的“第一个字节的时间”。这很奇怪,因为这似乎不是来自玩家(如mplayer),而是仅在使用HTML5音频时。开始播放音频需要30秒到120秒。

我认为这不是缓冲问题,因为在此期间我似乎没有收到任何字节。例如,如果我使用详细标志运行curl命令:

~ben ~: curl http://radio.example.com:8000/radio.mp3 -v
*   Trying XX.XX.XX.XXX...
* TCP_NODELAY set
* Connected to radio.example.com (XX.XX.XX.XXX) port 8000 (#0)
> GET /radio.mp3 HTTP/1.1
> Host: radio.example.com:8000
> User-Agent: curl/7.51.0
> Accept: */*
>

在看到任何字节进入之前,它至少会持续28秒。相反,如果我运行mplayer:

~ben ~: mplayer http://radio.example.com:8000/radio.mp3
MPlayer 1.3.0-4.2.1 (C) 2000-2016 MPlayer Team
Can't init Apple Remote.

Playing http://radio.example.com:8000/radio.mp3.
Resolving radio.example.com for AF_INET6...

Couldn't resolve name for AF_INET6: radio.example.com
Resolving radio.example.com for AF_INET...
Connecting to server radio.example.com[XX.XX.XX.XXX]: 8000...

Cache size set to 320 KBytes
Cache fill:  0.00% (0 bytes)
ICY Info: StreamTitle='';
Cache fill:  5.00% (16384 bytes)
ICY Info: StreamTitle='';
Cache fill: 10.00% (32768 bytes)
ICY Info: StreamTitle='';
Cache fill: 15.00% (49152 bytes)
ICY Info: StreamTitle='';

ICY Info: StreamTitle='';


Audio only file format detected.
==========================================================================
Requested audio codec family [mpg123] (afm=mpg123) not available.
Enable it at compilation.
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
libavcodec version 57.24.102 (internal)
AUDIO: 44100 Hz, 2 ch, floatle, 128.0 kbit/4.54% (ratio: 16000->352800)
Selected audio codec: [ffmp3float] afm: ffmpeg (FFmpeg MPEG layer-3 audio)
==========================================================================
AO: [coreaudio] 44100Hz 2ch floatle (4 bytes per sample)
Video: no video
Starting playback...

它会在几秒钟内缓冲并开始播放。

Icecast配置

以下是我认为的相关配置

<icecast>
    <limits>
        <clients>100</clients>
        <sources>2</sources>
        <queue-size>102400</queue-size>
        <client-timeout>30</client-timeout>
        <header-timeout>15</header-timeout>
        <source-timeout>1</source-timeout>
        <burst-size>943718</burst-size>
        <mp3-metadata-interval>4096</mp3-metadata-interval>
    </limits>


    <mount>
        <mount-name>/radio.mp3</mount-name>
        <password>*****************</password>

        <bitrate>128</bitrate>
        <type>audio/mpeg</type>
        <subtype>mp3</subtype>
        <hidden>0</hidden>
        <fallback-mount>/whitenoise.mp3</fallback-mount>
        <fallback-override>1</fallback-override>
    </mount>
</icecast>

尝试修复

我在几个不同的版本上尝试了这个,包括2.3.3,2.3.3-kh-11,2.4.0-kh4。我已经让它在过去使用kh分支正常工作但我无法使用kh分支获得后备坐骑。我可能只是放弃并尝试沿着那个兔子洞走下去。我也试图摆弄所有的爆发和缓冲配置,但这个问题似乎与那些没有关系。

1 个答案:

答案 0 :(得分:0)

在我的选项耗尽之后,我只是尝试从另一台计算机流式传输并发现问题没有发生。我让其他人尝试了,他们确认他们没有在流上看到这个问题。这让我相信问题出在我的计算机上(在这种情况下是流媒体客户端)。我怀疑它正在尝试将连接升级到TLS加密连接(之前已经发生过这个域),但不确定。无论哪种方式,它都不是icecast的问题。