爱意满满的作品展示区。
KasuganoSoras

开源一个好玩的项目 SyncMusic,一起在线听歌和聊天

  •  6
     
  •   KasuganoSoras ·
    kasuganosoras · Nov 7, 2019 · 14314 views
    This topic created in 2553 days ago, the information mentioned may be changed or developed.

    前天晚上我和朋友在群里讨论,他开发了一个点歌台,易语言写的,在 B 站上通过直播的方式来播放,通过弹幕点歌。

    然后我就有了个想法,做一个网页的点歌台,然后也可以做类似于弹幕这样的实时交流功能。

    经过一个晚上的开发,我做出了这个项目 SyncMusic,基本上实现了和他的点歌台一样的功能,唯一不同的地方就是我的点歌台是在网页上播放音乐的,而不是直播。

    img

    项目地址: https://github.com/kasuganosoras/SyncMusic

    代码写了很详细的注释,非常适合新人学习 PHP WebSocket 应用程序开发。

    功能特性

    • 支持在线点歌
    • 支持多人实时聊天
    • 支持投票切掉当前音乐
    • 没人点歌的时候可以随机播放音乐
    • 管理员可切歌
    • 管理员可删除指定音乐
    • 管理员可将指定音乐提前播放
    • 管理员可禁言指定用户
    • 美观的界面 (Material Design)
    • 无需登录,任何人都可以点歌
    • 无需数据库,由 Swoole 内存表储存数据

    有个地方就是获取音乐时间长度是用了 Python,原本我是想直接用 PHP 来获取的,但是有点麻烦,还要导入一个单独的库,想了想还是用最简单的办法来解决,于是就用 Python 整了个简单的脚本。

    如果你有更好的读取音乐时间的实现方法,欢迎提 Pr 或通过 Issues 告诉我。

    在线体验

    如果你只是想体验一下或者单纯听歌,可以访问我的 Demo:https://music.tql.ink/

    还请 dalao 们合理玩耍,不要点一些奇奇怪怪或者很难听的音乐,谢谢了~

    91 replies  •  2019-12-26 18:49:40 +08:00
    azssjli
    azssjli
    Nov 7, 2019
    1
    你觉得你说了布点奇怪的歌我就会不点了吗,我就点 XD
    KasuganoSoras
    KasuganoSoras
    OP
    Nov 7, 2019❤️1
    2
    @azssjli #1 其实还在测试的时候我们群里的人就点了一大堆奇奇怪怪的歌了 23333
    BreadKiller
    BreadKiller
    Nov 7, 2019❤️1
    3
    虾米以前网页版有 loop,后来有自己的直播间可以让朋友进来跟听(就是我放什么别人进来的一样听什么);
    现在虾米 app 有趴间,功能上和 loop 差不多,可以有三个人上台轮流放歌,好听就给赞,不好听就踩(类似投票机制);
    上面的都可以文字交流,网页的 loop 和直播间现在都没了,只剩下 app 的趴间。
    不同点就是这些都不是点歌机制,播放什么歌决定权在一个或几个人手上而已,但是可以自己开一个趴间(直播间)放自己的歌然后让别人来一起听一起交流。
    run2
    run2
    Nov 7, 2019❤️1
    4
    可以弄个小程序 点歌, 给咖啡厅 /餐吧 这些用
    VIP 可以点歌置顶什么的 😂
    KasuganoSoras
    KasuganoSoras
    OP
    Nov 7, 2019
    5
    @sobigfish #4 想法不错,至于 VIP 这个就需要接入用户系统了,这个以后再考虑吧
    Uyuhz
    Uyuhz
    Nov 7, 2019
    6
    看起来挺好玩的...不过刚才点一首 https://music.163.com/#/song?id=515143072 一直失败换了一首又好了...然后我才发现居然还有非客户端不能播放的歌...
    Opportunity
    Opportunity
    Nov 7, 2019
    7
    @sobigfish KFC 现在就有这个功能
    luckyrayyy
    luckyrayyy
    Nov 7, 2019
    8
    有点意思
    luckyrayyy
    luckyrayyy
    Nov 7, 2019
    9
    我怎么看不到别人说话,自己打的字也没看到在哪
    KasuganoSoras
    KasuganoSoras
    OP
    Nov 7, 2019
    10
    @Uyuhz #6 @luckyrayyy #9 刚刚服务器有 bug,修好了
    ZredoC
    ZredoC
    Nov 7, 2019
    11
    👍👍👍
    SuperM
    SuperM
    Nov 7, 2019
    12
    支持下,感觉蛮好玩的
    Uyuhz
    Uyuhz
    Nov 7, 2019
    13
    @KasuganoSoras 我说的 515143072 点歌失败的那个好像是网易云的问题,不是你的问题😂
    lmx111aaa
    lmx111aaa
    Nov 7, 2019
    14
    讲道理,就像一个人安安静静的听歌
    KasuganoSoras
    KasuganoSoras
    OP
    Nov 7, 2019
    15
    @lmx111aaa #14 其实最初的想法也是安静听歌。。只是人一多起来就欢乐了 2333
    moonrailgun
    moonrailgun
    PRO
    Nov 7, 2019
    16
    高中生可太厉害了
    Ultraman
    Ultraman
    Nov 7, 2019 via Android
    17
    lost river 哪位给安排上🙃
    lxk11153
    lxk11153
    Nov 7, 2019
    18
    "点歌台,易语言写的" 叫啥?
    yoqu
    yoqu
    Nov 7, 2019
    19
    👍👍👍
    MyFaith
    MyFaith
    Nov 7, 2019
    21
    之前在斗鱼某点歌直播间,点了几首首 2 小时起步的
    4DAX07B8Kle4Dm6T
    4DAX07B8Kle4Dm6T
    Nov 7, 2019
    22
    6666,不错
    sdytman
    sdytman
    Nov 7, 2019 via iPhone
    23
    这个 ui 设楼主自己写的?
    KasuganoSoras
    KasuganoSoras
    OP
    Nov 7, 2019
    24
    @sdytman #23 嗯,基于 Material Design 设计,除了这个背景模糊效果是参考 MKOnlineMusicPlayer 改的,其他都是我自己写的。
    zuokanyunqishi
    zuokanyunqishi
    Nov 7, 2019 via Android
    25
    厉害厉害👍
    nobt
    nobt
    Nov 7, 2019 via iPhone
    26
    为啥我 safari 没声音
    mywaiting
    mywaiting
    Nov 8, 2019
    27
    @sobigfish 这个需求我这里还真有........
    FEDT
    FEDT
    Nov 8, 2019 via iPhone
    28
    一晚上,太强了👍🏻
    hanhuoer
    hanhuoer
    Nov 8, 2019
    29
    哈哈,刚去逛了逛,厉害👍
    crab
    crab
    Nov 8, 2019
    30
    虾米 loop
    miaomiao888
    miaomiao888
    Nov 8, 2019
    31
    想到以前的多米 DJ,谁都可以上台当 DJ 放自己喜欢的音乐然后一起听
    PingPong
    PingPong
    Nov 8, 2019 via Android
    32
    一定要设置违禁词,国歌什么的
    longkas
    longkas
    Nov 8, 2019 via Android
    33
    一晚上,太牛逼了,我弄了个放电影直播间大半年
    codingBug
    codingBug
    Nov 8, 2019
    34
    我想问问,要用耳机吗?
    SmallNing
    SmallNing
    Nov 8, 2019
    35
    感觉 挺好玩的 ~
    SmallNing
    SmallNing
    Nov 8, 2019
    36
    要是有 app 就好啦 ~ 再也不用找歌曲听了
    qping
    qping
    Nov 8, 2019
    37
    音乐的源用的哪里?
    qping
    qping
    Nov 8, 2019
    38
    @qping #37 我自己找到了,给楼主点个赞
    BuilderQiu
    BuilderQiu
    Nov 8, 2019
    39
    如果大部分都挂机听歌...这 30%切歌就切不动了..
    imdong
    imdong
    Nov 8, 2019
    40
    真·云听歌

    点啥听啥,佛系随缘。
    aalikes95
    aalikes95
    Nov 8, 2019
    41
    不错,相当的爽
    dinjufen
    dinjufen
    Nov 8, 2019
    42
    题主高中生吗?我自愧不如。。
    wsbnd9
    wsbnd9
    Nov 8, 2019
    43
    切歌太难了
    cwjokaka
    cwjokaka
    Nov 8, 2019
    44
    有趣,别人的一晚上系列
    rykka
    rykka
    Nov 8, 2019 via Android
    45
    歌从哪里来?
    zackwu
    zackwu
    Nov 8, 2019
    46
    做的很不错啊~
    7654
    7654
    Nov 8, 2019
    47
    SSL 810 端口的服务我这里的网络不支持。so sad
    gzzchh
    gzzchh
    Nov 8, 2019 via Android
    48
    聊天内容要审查哦,不然容易查水表
    killerv
    killerv
    Nov 8, 2019
    49
    可以的,挺好玩
    zerozz
    zerozz
    Nov 8, 2019
    50
    大佬的一晚上系列,体验了一下,挺好玩,666
    Rekkles
    Rekkles
    Nov 8, 2019
    51
    6666
    xianxiaobo
    xianxiaobo
    Nov 8, 2019
    52
    建议像直播放电影里面那样的积分制播放下一首歌曲,切歌太难了,更不要说连续切歌了。
    haozes
    haozes
    Nov 8, 2019
    53
    不错不错
    caryqy
    caryqy
    Nov 8, 2019
    54
    和你朋友说下,直播弹幕点歌的注意一些歌是不能放的,不然直播间就没了
    Donne
    Donne
    Nov 8, 2019
    55
    一晚上弄出来,我滴个龟龟
    NotNil1
    NotNil1
    Nov 8, 2019
    56
    厉害厉害,好好玩啊
    ksc010
    ksc010
    Nov 8, 2019
    57
    可以考虑增加“频道”功能
    将有不同音乐品味的人区分开来
    ksc010
    ksc010
    Nov 8, 2019
    58
    feature2:
    待播放列表 直接可以投票 超过一定票数自动跳过不播放
    hideonwhere
    hideonwhere
    Nov 8, 2019
    59
    曲库太少了吧
    IMengXin
    IMengXin
    Nov 8, 2019
    60
    为啥我点的所有歌都是 未搜索到此歌曲
    archknight
    archknight
    Nov 8, 2019
    61
    都是在疯狂切歌
    senher
    senher
    Nov 8, 2019
    62
    这些歌都是哪来的?
    cont
    cont
    Nov 8, 2019
    63
    我点什么歌都是提示“未搜索到此歌曲”
    11ssss
    11ssss
    Nov 8, 2019
    65
    不是曲库少 是 ip ban 了
    Xatoi
    Xatoi
    Nov 8, 2019 via iPhone
    66
    版权灾难
    richard1122
    richard1122
    Nov 8, 2019
    67
    之前做过一个类似的,在处理用户主动切、用户结束后切、投票这些问题上有一些实践,贴一段代码供参考:

    ```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
    mrcuya
    mrcuya
    Nov 8, 2019
    69
    我之前实现了一个小程序版的,虾米也是抄袭国外的 turntable。只是个人小程序类目限制不让上,最后就放在那边了。
    VxLzKg4uLbi32w60
    VxLzKg4uLbi32w60
    Nov 8, 2019
    70
    设置昵称老是失败:设置昵称 XX 有提示不能写空格 设置昵称 XX 又当作消息发送了
    VxLzKg4uLbi32w60
    VxLzKg4uLbi32w60
    Nov 8, 2019
    71
    然后,收集一下被切过的歌吧,设置黑名单~~~~
    Yien
    Yien
    Nov 8, 2019 via iPhone
    72
    一晚上🐂🍺
    54xavier
    54xavier
    Nov 8, 2019
    73
    听了一下午的歌,来留个言,不错不错 github start 了
    justseemore
    justseemore
    Nov 8, 2019
    74
    老哥,你 cxk-ball 是认真的么..
    squallsdjl
    squallsdjl
    Nov 9, 2019
    75
    话说。。。这些歌曲会遇到版权问题么。。,TAT
    MagicBoy
    MagicBoy
    Nov 9, 2019
    76
    楼主高中生?冒昧问一下楼主多大了
    pbrluoji
    pbrluoji
    Nov 9, 2019
    77
    听不到声音。。。。。
    pbrluoji
    pbrluoji
    Nov 9, 2019
    78
    桌面 chrome 77.0 版本听不到声音,edge 可以
    JssDream
    JssDream
    Nov 9, 2019
    79
    感觉有点东西,很有意思!!可以多加些图片,表情什么的!!
    matsuijurina
    matsuijurina
    Nov 9, 2019 via Android
    80
    "半天撸了一个站,我才初三请轻赞。" v 站传统怎么楼上好多人都不记得了
    rekulas
    rekulas
    Nov 9, 2019
    81
    guanhui07
    guanhui07
    Nov 10, 2019
    82
    蛮好玩的
    jemyzhang
    jemyzhang
    Nov 11, 2019
    83
    赞一下, 挺有意思,听听大家平时都听什么歌
    doveyoung
    doveyoung
    Nov 11, 2019
    84
    在线 16 人,正在播放好汉歌
    dogepar
    dogepar
    Nov 11, 2019
    85
    挺帅!
    DavidG
    DavidG
    Nov 14, 2019
    86
    点了潇洒走一回 潜伏的爱 大花轿 走四方等经典歌曲,感觉非常满意
    cydian
    cydian
    Nov 15, 2019 via Android
    87
    你的 API 里面添加了 netease 的 cookie ? 我打开了看下是 mkplayer 但是为什么不能用 QQ ?
    nazznazzz
    nazznazzz
    Nov 15, 2019
    88
    挺好玩的,不过能按喜好分房间就好了
    evilnull
    evilnull
    Dec 4, 2019
    89
    @KasuganoSoras 证书过期了,而且启用了 HSTS,没法忽略
    tmsdy0404
    tmsdy0404
    Dec 7, 2019
    90
    已经成功架在办公室内网。。。最后还是弄了个虚拟机装。
    xcstream
    xcstream
    Dec 26, 2019
    91
    哇
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3214 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 213ms · UTC 04:29 · PVG 12:29 · LAX 20:29 · JFK 23:29
    ♥ Do have faith in what you're doing.