首先,想到的是利用 Audio 标签,Audio 标签可以直接播放 MP3 格式,服务端将实时音频流编码成 MP3 格式
通过 Http 方式传给 Web 端即可
HTML5 提供了 audio 标签播放音频,代码比较简单,但有缓冲过大问题,粗略测试了下延时 20-30s 左右,这显然不能满足实时在线播放的要求,这需要其他的解决方案
Audio 标签的方式不行,想到利用 Web Audio API 是实现,基本的思路是:通过 WebSocket 接收服务端推送过来的音
频流( MP3 格式)调用 decodeAudioData 进行解码,最后将解码数据推送到 AudioContext
不知各位大佬有什么指点的,现在还在尝试和探索中。。。
谢谢各位大佬。
1
matepi 2020-04-24 12:26:10 +08:00
H5 live stream 有标准的为啥不用呢
mozilla 文档先翻翻? https://developer.mozilla.org/en-US/docs/Web/Guide/Audio_and_video_delivery/Live_streaming_web_audio_and_video |
2
learningman 2020-04-24 12:40:33 +08:00 via Android
延时 20s 是怎么做到的。。。20 秒一首普通音乐都能下载完了吧
|
3
gaodeng 2020-04-24 12:43:38 +08:00
可以试试 hls,现成的方案,为啥要去造轮子。
|
4
cydian 2020-04-24 12:44:09 +08:00 via Android
@learningman 他应该说的是跟直播一样。
只不过传的是音频,而不是音视频 |
6
lbw 2020-04-24 13:44:07 +08:00
AudioContext + WebSocket 基本没有延时,瓶颈在网络
|
8
fancy111 2020-04-24 14:23:19 +08:00
webrtc 满足你一切需求
|
10
xylxsss 2020-04-24 17:05:28 +08:00
MSE,往里面塞音频缓存就完事了
|
11
sparrww 2020-04-24 17:13:11 +08:00
类似网站 有兴趣自己研究 domeet.net
|
12
gggxxxx 2020-04-24 17:28:49 +08:00
hls 啊,行业直播标准。
如果是即时聊天那种,允许丢包的 rtp 才是。 |
13
catinsides 2020-04-24 18:35:29 +08:00
服务端转成无画面音视频流,浏览器用播放器拉流,然后将播放器隐藏
|