前天晚上我和朋友在群里讨论,他开发了一个点歌台,易语言写的,在 B 站上通过直播的方式来播放,通过弹幕点歌。
然后我就有了个想法,做一个网页的点歌台,然后也可以做类似于弹幕这样的实时交流功能。
经过一个晚上的开发,我做出了这个项目 SyncMusic,基本上实现了和他的点歌台一样的功能,唯一不同的地方就是我的点歌台是在网页上播放音乐的,而不是直播。
项目地址: https://github.com/kasuganosoras/SyncMusic
代码写了很详细的注释,非常适合新人学习 PHP WebSocket 应用程序开发。
有个地方就是获取音乐时间长度是用了 Python,原本我是想直接用 PHP 来获取的,但是有点麻烦,还要导入一个单独的库,想了想还是用最简单的办法来解决,于是就用 Python 整了个简单的脚本。
如果你有更好的读取音乐时间的实现方法,欢迎提 Pr 或通过 Issues 告诉我。
如果你只是想体验一下或者单纯听歌,可以访问我的 Demo:https://music.tql.ink/
还请 dalao 们合理玩耍,不要点一些奇奇怪怪或者很难听的音乐,谢谢了~
![]() | 1 azssjli 2019-11-07 14:59:51 +08:00 你觉得你说了布点奇怪的歌我就会不点了吗,我就点 XD |
![]() | 2 KasuganoSoras OP ![]() @azssjli #1 其实还在测试的时候我们群里的人就点了一大堆奇奇怪怪的歌了 23333 |
![]() | 3 BreadKiller 2019-11-07 15:09:42 +08:00 ![]() 虾米以前网页版有 loop,后来有自己的直播间可以让朋友进来跟听(就是我放什么别人进来的一样听什么); 现在虾米 app 有趴间,功能上和 loop 差不多,可以有三个人上台轮流放歌,好听就给赞,不好听就踩(类似投票机制); 上面的都可以文字交流,网页的 loop 和直播间现在都没了,只剩下 app 的趴间。 不同点就是这些都不是点歌机制,播放什么歌决定权在一个或几个人手上而已,但是可以自己开一个趴间(直播间)放自己的歌然后让别人来一起听一起交流。 |
![]() | 4 run2 2019-11-07 15:25:14 +08:00 ![]() 可以弄个小程序 点歌, 给咖啡厅 /餐吧 这些用 VIP 可以点歌置顶什么的 |
![]() | 5 KasuganoSoras OP @sobigfish #4 想法不错,至于 VIP 这个就需要接入用户系统了,这个以后再考虑吧 |
![]() | 6 Uyuhz 2019-11-07 15:37:47 +08:00 看起来挺好玩的...不过刚才点一首 https://music.163.com/#/song?id=515143072 一直失败换了一首又好了...然后我才发现居然还有非客户端不能播放的歌... |
![]() | 7 Opportunity 2019-11-07 15:43:09 +08:00 @sobigfish KFC 现在就有这个功能 |
![]() | 8 luckyrayyy 2019-11-07 15:43:59 +08:00 有点意思 |
![]() | 9 luckyrayyy 2019-11-07 15:46:12 +08:00 我怎么看不到别人说话,自己打的字也没看到在哪 |
![]() | 10 KasuganoSoras OP @Uyuhz #6 @luckyrayyy #9 刚刚服务器有 bug,修好了 |
![]() | 11 ZredoC 2019-11-07 16:03:02 +08:00 |
12 SuperM 2019-11-07 16:51:48 +08:00 支持下,感觉蛮好玩的 |
![]() | 13 Uyuhz 2019-11-07 17:06:27 +08:00 @KasuganoSoras 我说的 515143072 点歌失败的那个好像是网易云的问题,不是你的问题 |
![]() | 14 lmx111aaa 2019-11-07 17:23:58 +08:00 讲道理,就像一个人安安静静的听歌 |
![]() | 15 KasuganoSoras OP @lmx111aaa #14 其实最初的想法也是安静听歌。。只是人一多起来就欢乐了 2333 |
![]() | 16 moonrailgun 2019-11-07 18:26:00 +08:00 高中生可太厉害了 |
![]() | 17 Ultraman 2019-11-07 18:35:07 +08:00 via Android lost river 哪位给安排上 |
![]() | 18 lxk11153 2019-11-07 19:05:05 +08:00 "点歌台,易语言写的" 叫啥? |
19 yoqu 2019-11-07 19:11:00 +08:00 |
![]() | 20 KasuganoSoras OP |
![]() | 21 MyFaith 2019-11-07 20:21:00 +08:00 之前在斗鱼某点歌直播间,点了几首首 2 小时起步的 |
![]() | 22 4DAX07B8Kle4Dm6T 2019-11-07 20:27:07 +08:00 6666,不错 |
23 sdytman 2019-11-07 20:31:00 +08:00 via iPhone 这个 ui 设楼主自己写的? |
![]() | 24 KasuganoSoras OP @sdytman #23 嗯,基于 Material Design 设计,除了这个背景模糊效果是参考 MKOnlineMusicPlayer 改的,其他都是我自己写的。 |
![]() | 25 zuokanyunqishi 2019-11-07 22:33:51 +08:00 via Android 厉害厉害 |
![]() | 26 nobt 2019-11-07 23:37:19 +08:00 via iPhone 为啥我 safari 没声音 |
![]() | 28 FEDT 2019-11-08 01:01:27 +08:00 via iPhone 一晚上,太强了 |
![]() | 30 crab 2019-11-08 01:11:04 +08:00 虾米 loop |
![]() | 31 miaomiao888 2019-11-08 03:47:46 +08:00 想到以前的多米 DJ,谁都可以上台当 DJ 放自己喜欢的音乐然后一起听 |
![]() | 32 Linon 2019-11-08 04:58:25 +08:00 via Android 一定要设置违禁词,国歌什么的 |
33 longkas 2019-11-08 08:47:48 +08:00 via Android 一晚上,太牛逼了,我弄了个放电影直播间大半年 |
![]() | 34 codingBug 2019-11-08 09:32:30 +08:00 我想问问,要用耳机吗? |
![]() | 35 SmallNing 2019-11-08 09:33:48 +08:00 感觉 挺好玩的 ~ |
![]() | 36 SmallNing 2019-11-08 09:50:48 +08:00 要是有 app 就好啦 ~ 再也不用找歌曲听了 |
![]() | 39 BuilderQiu 2019-11-08 09:56:30 +08:00 如果大部分都挂机听歌...这 30%切歌就切不动了.. |
![]() | 40 imdong 2019-11-08 10:19:18 +08:00 真云听歌 点啥听啥,佛系随缘。 |
![]() | 41 aalikes95 2019-11-08 10:42:48 +08:00 不错,相当的爽 |
![]() | 42 dinjufen 2019-11-08 10:49:19 +08:00 题主高中生吗?我自愧不如。。 |
![]() | 43 wsbnd9 2019-11-08 11:24:10 +08:00 切歌太难了 |
![]() | 44 cwjokaka 2019-11-08 12:01:42 +08:00 有趣,别人的一晚上系列 |
45 rykka 2019-11-08 12:30:50 +08:00 via Android 歌从哪里来? |
46 zackwu 2019-11-08 12:48:00 +08:00 做的很不错啊~ |
![]() | 47 7654 2019-11-08 12:54:57 +08:00 SSL 810 端口的服务我这里的网络不支持。so sad |
48 gzzchh 2019-11-08 13:11:40 +08:00 via Android 聊天内容要审查哦,不然容易查水表 |
49 killerv 2019-11-08 13:30:36 +08:00 可以的,挺好玩 |
![]() | 50 zerozz 2019-11-08 13:45:54 +08:00 大佬的一晚上系列,体验了一下,挺好玩,666 |
![]() | 51 Rekkles 2019-11-08 14:19:53 +08:00 6666 |
![]() | 52 xianxiaobo 2019-11-08 14:30:11 +08:00 建议像直播放电影里面那样的积分制播放下一首歌曲,切歌太难了,更不要说连续切歌了。 |
![]() | 53 haozes 2019-11-08 14:39:21 +08:00 不错不错 |
![]() | 54 caryqy 2019-11-08 14:41:13 +08:00 和你朋友说下,直播弹幕点歌的注意一些歌是不能放的,不然直播间就没了 |
![]() | 55 Donne 2019-11-08 14:42:36 +08:00 一晚上弄出来,我滴个龟龟 |
![]() | 56 NotNil1 2019-11-08 14:55:33 +08:00 厉害厉害,好好玩啊 |
![]() | 57 ksc010 2019-11-08 15:08:24 +08:00 可以考虑增加“频道”功能 将有不同音乐品味的人区分开来 |
![]() | 58 ksc010 2019-11-08 15:10:47 +08:00 feature2: 待播放列表 直接可以投票 超过一定票数自动跳过不播放 |
![]() | 59 hideonwhere 2019-11-08 15:14:04 +08:00 曲库太少了吧 |
![]() | 60 IMengXin 2019-11-08 15:25:50 +08:00 为啥我点的所有歌都是 未搜索到此歌曲 |
61 archknight 2019-11-08 15:30:48 +08:00 ![]() |
![]() | 62 senher 2019-11-08 15:33:29 +08:00 这些歌都是哪来的? |
![]() | 63 cont 2019-11-08 15:43:01 +08:00 我点什么歌都是提示“未搜索到此歌曲” |
![]() | 64 natforum 2019-11-08 15:45:54 +08:00 |
![]() | 65 11ssss 2019-11-08 15:46:53 +08:00 不是曲库少 是 ip ban 了 |
![]() | 66 Xatoi 2019-11-08 17:00:29 +08:00 via iPhone 版权灾难 |
![]() | 67 richard1122 2019-11-08 17:08:31 +08:00 之前做过一个类似的,在处理用户主动切、用户结束后切、投票这些问题上有一些实践,贴一段代码供参考: ```c# private void CheckShouldForwardCurrentSong() { var userList = list.UserList; var downVoteUserCount = downvoteUsers.Intersect(userList).Count; var undeterminedCount = userList.Except(downvoteUsers).Except(finishedUsers).Count(); var cOnnectedUserCount= userList.Select(it => socketManager.IsConnected(it)).Count(); if (!list.IsPlaying || downVoteUserCount >= QueryForceForwardCount(connectedUserCount) || undeterminedCount == 0) { ShouldForwardNow(); } else if (undeterminedCount <= connectedUserCount * 0.5) { if (finishTimeoutTimer != null) return; finishTimeoutTimer = new Timer(ShouldForwardNow, null, 5 * 1000, Infinite); } } private static int QueryForceForwardCount(int total) { return Convert.ToInt32(Math.Ceiling((double)total / 2)); } ``` 主要是需要考虑网络不好的用户可能还没听完,所以有一个 5 秒的缓冲期。 用户分成三类: * 主动切:downVoteUserCount * 已结束当前歌曲:finishedUsers * 没有态度:undeterminedCount |
![]() | 68 richard1122 2019-11-08 17:10:03 +08:00 |
![]() | 69 mrcuya 2019-11-08 17:36:36 +08:00 我之前实现了一个小程序版的,虾米也是抄袭国外的 turntable。只是个人小程序类目限制不让上,最后就放在那边了。 |
70 VxLzKg4uLbi32w60 2019-11-08 17:42:57 +08:00 设置昵称老是失败:设置昵称 XX 有提示不能写空格 设置昵称 XX 又当作消息发送了 |
71 VxLzKg4uLbi32w60 2019-11-08 17:47:40 +08:00 然后,收集一下被切过的歌吧,设置黑名单~~~~ |
![]() | 72 Yien 2019-11-08 18:04:08 +08:00 via iPhone 一晚上 |
![]() | 73 54xavier 2019-11-08 19:41:54 +08:00 听了一下午的歌,来留个言,不错不错 github start 了 |
![]() | 74 justseemore 2019-11-08 19:43:52 +08:00 老哥,你 cxk-ball 是认真的么.. |
![]() | 75 squallsdjl 2019-11-09 02:58:42 +08:00 话说。。。这些歌曲会遇到版权问题么。。,TAT |
76 MagicBoy 2019-11-09 11:03:45 +08:00 楼主高中生?冒昧问一下楼主多大了 |
![]() | 77 pbrluoji 2019-11-09 15:09:44 +08:00 听不到声音。。。。。 |
![]() | 78 pbrluoji 2019-11-09 15:16:25 +08:00 桌面 chrome 77.0 版本听不到声音,edge 可以 |
![]() | 79 JssDream 2019-11-09 16:03:00 +08:00 感觉有点东西,很有意思!!可以多加些图片,表情什么的!! |
![]() | 80 matsuijurina 2019-11-09 16:10:19 +08:00 via Android "半天撸了一个站,我才初三请轻赞。" v 站传统怎么楼上好多人都不记得了 |
![]() | 81 rekulas 2019-11-09 22:02:45 +08:00 |
![]() | 82 guanhui07 2019-11-10 12:27:56 +08:00 蛮好玩的 |
![]() | 83 jemyzhang 2019-11-11 09:42:00 +08:00 赞一下, 挺有意思,听听大家平时都听什么歌 |
![]() | 84 doveyoung 2019-11-11 11:48:44 +08:00 在线 16 人,正在播放好汉歌 |
85 dogepar 2019-11-11 16:41:03 +08:00 挺帅! |
![]() | 86 DavidG 2019-11-14 11:10:22 +08:00 点了潇洒走一回 潜伏的爱 大花轿 走四方等经典歌曲,感觉非常满意 |
![]() | 87 cydian 2019-11-15 01:12:57 +08:00 via Android 你的 API 里面添加了 netease 的 cookie ? 我打开了看下是 mkplayer 但是为什么不能用 QQ ? |
![]() | 88 nazznazzz 2019-11-15 20:35:45 +08:00 挺好玩的,不过能按喜好分房间就好了 |
89 evilnull 2019-12-04 16:35:17 +08:00 @KasuganoSoras 证书过期了,而且启用了 HSTS,没法忽略 |
![]() | 90 tmsdy0404 2019-12-07 11:51:32 +08:00 已经成功架在办公室内网。。。最后还是弄了个虚拟机装。 |
![]() | 91 xcstream 2019-12-26 18:49:40 +08:00 哇 |