用 Three.js 撸了一个 3D 地球 + 全球实时电台,性能有点炸,求优化建议

4 小时 37 分钟前
 xingwangchan

[点我直接玩] https://www.radiosphere.live/

这玩意是干啥的?

一个 3D 交互式地球,上面每一个绿点都是一个真实在线的网络广播电台( Shoutcast / Icecast )。
你旋转/缩放地球,随便点一个点,就能听到那个地区的广播——可能是音乐、新闻、甚至是半夜的脱口秀。

技术栈

目前遇到的坑(也是我想在 V2EX 求助的重点)

  1. 性能
    地球上的标记点目前是 8000+ 个独立的 PointsMaterial,帧率在低端设备上会掉到 30 以下。
    试过用 BufferGeometry 合并,但动态光晕(播放中的电台要单独高亮)就不好做了。
    求教:有没有在“大量静态点 + 少数动态高亮点”场景下的最佳实践?

  2. 音频流的 CORS & 混合内容
    很多电台流是 HTTP 的,我的网站是 HTTPS ,浏览器会 block 。
    目前用了一个公共 CORS 代理(https://cors-anywhere.herokuapp.com/),但不稳定而且慢。
    有没有更轻量的方案?或者自己搭一个简单的代理,成本大概多少?

  3. 数据更新
    电台经常失效(流地址 404 或者超时),我是半手工检测 + 脚本定期跑。
    想知道有没有比较稳定的全球公开电台 API ?不想一直维护死链。

接下来想加的功能

我需要你帮忙做的事

最后说句心里话

这个项目不是为了赚钱,纯粹想做点炫酷的东西。
做出来之后自己每天都会随便点几个没听过的国家,感觉很奇妙。
如果你也觉得有意思,欢迎转发给朋友;如果发现 bug 或者卡顿,直接喷,我改。

➡️ https://www.radiosphere.live/

(网站目前没有广告,也没有用户系统,打开即用)


可选的“沙发”自问自答

:为什么不用 Cesium ?
:Cesium 太重了,Three.js 更可控,而且我想保持打包后不到 2MB (不含纹理)。

:电台数据会不会涉及版权问题?
:所有流地址都是电台自己公开的 Shoutcast 入口,我只是做了一个播放器外壳,类似浏览器。


888 次点击
所在节点    分享创造
22 条回复
wktline
4 小时 19 分钟前
AI 说:没法优化了-炸!
burp2019
4 小时 16 分钟前
不用优化,让用户觉得炫的同时有点卡,凸显项目的难度和你的牛逼
0754
4 小时 9 分钟前
好酷炫~~
Tanf
4 小时 9 分钟前
不错不错
tianjiyao
3 小时 48 分钟前
挺好玩,,只是为啥大陆没有亮的。。。闪烁的都是欧美的区域。。
xingwangchan
3 小时 42 分钟前
@wktline 哈哈,我已经用 AI 优化过一轮了。性能到瓶颈了才来找网友的
xingwangchan
3 小时 38 分钟前
@tianjiyao 国内管控比较严格,只有市以上的广播电视行政部门才有资格申请设立电台
FstarKing
3 小时 33 分钟前
真不错,挺有意思
XTTX
3 小时 22 分钟前
用中国地图容易被喷,实属无解。
maybedk
3 小时 16 分钟前
挺好玩的哈哈,不过好像有 bug 。好像是我点某个频道无数据的话,会随机跳到别的地方。
qcbf111
3 小时 8 分钟前
用 unity 导出 webgl,走 unity 的渲染管线应该性能会高很多
Parva
3 小时 5 分钟前
好有意思,随便点一个,听起了音乐。
lmsh7
3 小时 3 分钟前
牛逼的, 很棒的 idea
qcbf111
3 小时 1 分钟前
@qcbf111 目测了下任务管理器, 原因应该在 pso 管线状态切换,还有渲染元素剔除排序收集这个阶段
IsaacYoung
2 小时 37 分钟前
静态的实例化渲染
aidevs
2 小时 32 分钟前
不错,666
logyxiao
2 小时 27 分钟前
看起来挺炫的
sn0wdr1am
2 小时 22 分钟前
嘲讽客户硬件太渣,让他们升级内存,升级 CPU 。
cst4you
2 小时 18 分钟前

看着卡卡的, 以为渲染性能问题, 没想到是限帧率了
lifei6671
2 小时 17 分钟前
使用 WASM 技术应该可以吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1217937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX