在线实时音频播放

2020-04-24 11:24:21 +08:00
 TomeWong

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

通过 Http 方式传给 Web 端即可

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

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

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

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

谢谢各位大佬。

3425 次点击
所在节点    程序员
13 条回复
matepi
2020-04-24 12:26:10 +08:00
learningman
2020-04-24 12:40:33 +08:00
延时 20s 是怎么做到的。。。20 秒一首普通音乐都能下载完了吧
gaodeng
2020-04-24 12:43:38 +08:00
可以试试 hls,现成的方案,为啥要去造轮子。
cydian
2020-04-24 12:44:09 +08:00
@learningman 他应该说的是跟直播一样。
只不过传的是音频,而不是音视频
TomeWong
2020-04-24 13:30:34 +08:00
@cydian 是的,音频转成 MP4
lbw
2020-04-24 13:44:07 +08:00
AudioContext + WebSocket 基本没有延时,瓶颈在网络
TomeWong
2020-04-24 14:17:05 +08:00
@lbw 带宽?
fancy111
2020-04-24 14:23:19 +08:00
webrtc 满足你一切需求
TomeWong
2020-04-24 14:25:32 +08:00
@fancy111 暂时没有技术储备
xylxsss
2020-04-24 17:05:28 +08:00
MSE,往里面塞音频缓存就完事了
sparrww
2020-04-24 17:13:11 +08:00
类似网站 有兴趣自己研究 domeet.net
gggxxxx
2020-04-24 17:28:49 +08:00
hls 啊,行业直播标准。
如果是即时聊天那种,允许丢包的 rtp 才是。
catinsides
2020-04-24 18:35:29 +08:00
服务端转成无画面音视频流,浏览器用播放器拉流,然后将播放器隐藏

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

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

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

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

© 2021 V2EX