如何使用springboot框架实现快响应,低延迟的流式媒体传输?

我正在使用 springboot 后端服务器为 android 前端提供音频接口。 我直接在application.yaml文件中对外暴露audio目…
关注者
2
被浏览
2,999

1 个回答

服务端的延迟分析可以尝试用chrome访问一下你的MP3文件。访问前先打开开发者工具->Network->Timing

可以看到各类延迟。最关键的指标TTFB表明你发请求到收到应答的第一个字节需要的时间,你期待的秒开能力一定会比这个时间长。你的各种努力只能无限逼近这个值。如果这个值你不满意,只能换ecs 的region,比如你人在上海,以阿里云为例,换个华东1或者华东2。不过一般没必要,相差只有几十毫秒。对于腾讯音乐来说,他有CDN来支持流媒体分发到距离客户端最近的边缘站,来减少这部分的时间开销。

另外,指标的详细说明可以点 Explanation这个链接查看。

对于流媒体来说,你想实现秒开,还要调优客户端。流媒体播放器都是有缓存的。我觉得大概率是你的播放器开始的缓冲时间设置的5秒。上古时代的网站内嵌mp3播放器都会有缓存时间,都不会秒开,所以客户端缓冲是一种常见现象。从用户体验上来讲,会用其他方式沿海这种缓存时间,比如一个flush小游戏,一个贴片广告,一个投票框等等。在现在的音视频网站里,都会由其他协议来加载流媒体,而不是一个 .mp3 这种简单粗暴的方式。在如今的流媒体领域,常见的有rtmp rtc 有这种方式,客户端也有对应的播放器。

说句题外话,快速搭建一个流媒体转发服务,国内有一款出色的软件srs 你可以在github 上找他的项目了解一下。可以用来搭建直播,连麦,点对点音视频聊天。

——

你不用nginx发布静态资源吗?用springboot亏你想的出来。