V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
TomeWong
V2EX  ›  程序员

在线实时音频播放

  •  
  •   TomeWong · 2020-04-24 11:24:21 +08:00 · 3177 次点击
    这是一个创建于 1456 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首先,想到的是利用 Audio 标签,Audio 标签可以直接播放 MP3 格式,服务端将实时音频流编码成 MP3 格式

    通过 Http 方式传给 Web 端即可

    HTML5 提供了 audio 标签播放音频,代码比较简单,但有缓冲过大问题,粗略测试了下延时 20-30s 左右,这显然不能满足实时在线播放的要求,这需要其他的解决方案

    Audio 标签的方式不行,想到利用 Web Audio API 是实现,基本的思路是:通过 WebSocket 接收服务端推送过来的音

    频流( MP3 格式)调用 decodeAudioData 进行解码,最后将解码数据推送到 AudioContext

    不知各位大佬有什么指点的,现在还在尝试和探索中。。。

    谢谢各位大佬。

    13 条回复    2020-04-24 18:35:29 +08:00
    matepi
        1
    matepi  
       2020-04-24 12:26:10 +08:00
    learningman
        2
    learningman  
       2020-04-24 12:40:33 +08:00 via Android
    延时 20s 是怎么做到的。。。20 秒一首普通音乐都能下载完了吧
    gaodeng
        3
    gaodeng  
       2020-04-24 12:43:38 +08:00
    可以试试 hls,现成的方案,为啥要去造轮子。
    cydian
        4
    cydian  
       2020-04-24 12:44:09 +08:00 via Android
    @learningman 他应该说的是跟直播一样。
    只不过传的是音频,而不是音视频
    TomeWong
        5
    TomeWong  
    OP
       2020-04-24 13:30:34 +08:00
    @cydian 是的,音频转成 MP4
    lbw
        6
    lbw  
       2020-04-24 13:44:07 +08:00
    AudioContext + WebSocket 基本没有延时,瓶颈在网络
    TomeWong
        7
    TomeWong  
    OP
       2020-04-24 14:17:05 +08:00
    @lbw 带宽?
    fancy111
        8
    fancy111  
       2020-04-24 14:23:19 +08:00
    webrtc 满足你一切需求
    TomeWong
        9
    TomeWong  
    OP
       2020-04-24 14:25:32 +08:00
    @fancy111 暂时没有技术储备
    xylxsss
        10
    xylxsss  
       2020-04-24 17:05:28 +08:00
    MSE,往里面塞音频缓存就完事了
    sparrww
        11
    sparrww  
       2020-04-24 17:13:11 +08:00
    类似网站 有兴趣自己研究 domeet.net
    gggxxxx
        12
    gggxxxx  
       2020-04-24 17:28:49 +08:00
    hls 啊,行业直播标准。
    如果是即时聊天那种,允许丢包的 rtp 才是。
    catinsides
        13
    catinsides  
       2020-04-24 18:35:29 +08:00
    服务端转成无画面音视频流,浏览器用播放器拉流,然后将播放器隐藏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1665 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:43 · PVG 00:43 · LAX 09:43 · JFK 12:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.