首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何流式播放低延迟的直播音频

如何流式播放低延迟的直播音频
EN

Stack Overflow用户
提问于 2019-05-12 14:02:49
回答 1查看 3.9K关注 0票数 9

我编写了一个服务器程序,使用expressosx-audiolame从我的MacBook的音频输入创建音频流

代码语言:javascript
复制
const http = require("http");
const express = require("express");
const audio = require("osx-audio");
const lame = require("lame");
const audioInput = new audio.Input();

const encoder = new lame.Encoder({
  channels: 2,
  bitDepth: 16,
  sampleRate: 44100,
  bitRate: 128,
  outSampleRate: 22050,
  mode: lame.STEREO
});

audioInput.pipe(encoder);

const app = express();
const server = http.Server(app);

app.get("/stream.mp3", (req, res) => {
  res.set({
    "Content-Type": "audio/mpeg",
    "Transfer-Encoding": "chunked"
  });
  encoder.pipe(res);
});

server.listen(3000);

在客户端,来自该音频流的声音被包含为一个元素,如下所示:

代码语言:javascript
复制
<audio controls autoplay preload="none">
  <source src="./stream.mp3" type="audio/mpeg" />
  <p>Oops – your browser doesn't support HTML5 audio!</p>
</audio>

这是有效的-当我点击音频元素上的“播放”按钮时,我可以从连接到服务器的任何浏览器上听到我在笔记本电脑上选择的输入源的声音。

然而,浏览器播放的音频滞后于原始信号几秒钟。似乎虽然我使用的是preload="none",但浏览器在开始播放之前会缓冲相当多的音频流。

这里有什么明显的遗漏吗?有没有更好的方法来实现实时音频,只有几毫秒的延迟,而不是几秒?

如果你感兴趣,我的项目的完整源代码是here on GitHub

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56096603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档