我正在运行一个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>
<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分支获得后备坐骑。我可能只是放弃并尝试沿着那个兔子洞走下去。我也试图摆弄所有的爆发和缓冲配置,但这个问题似乎与那些没有关系。
答案 0 :(得分:0)
在我的选项耗尽之后,我只是尝试从另一台计算机流式传输并发现问题没有发生。我让其他人尝试了,他们确认他们没有在流上看到这个问题。这让我相信问题出在我的计算机上(在这种情况下是流媒体客户端)。我怀疑它正在尝试将连接升级到TLS加密连接(之前已经发生过这个域),但不确定。无论哪种方式,它都不是icecast的问题。