跳过导航,直接进入主要内容跳过导航,直接进入主要内容跳过导航,直接进入主要内容

GET /stream — MJPEG 实时视频流

← 设备控制 | WiFi 扫描 →


获取摄像头的 MJPEG 实时视频流。浏览器可直接将此端点作为 <img> 标签的 src 使用。

注意:MJPEG 流运行在 端口 81(独立TCP服务器),而Web界面运行在端口80。流URL为 http://<设备IP>:81/stream

认证:无需认证

源码:mjpeg_stream_handler(mjpeg_streamer.c)

响应头:

Content-Type: multipart/x-mixed-replace; boundary=frame
Access-Control-Allow-Origin: *

响应体格式:

流式响应由连续的 JPEG 帧组成,每帧格式如下:

\r\n--frame\r\n
Content-Type: image/jpeg\r\n
Content-Length: <帧数据字节数>\r\n
\r\n
<JPEG 二进制数据>\r\n

限制:

  • 最多支持 2 个并发客户端连接
  • 超过连接数限制时返回 503 Service Unavailable,响应体:Max stream connections reached
  • 帧率由配置项 fps 控制(默认 10 FPS)
  • 每帧 JPEG 数据以 4096 字节分块发送
  • 客户端断开连接时自动释放资源

cURL 示例:

# 将一帧保存为 JPEG(超时后自动断开)
curl --max-time 1 http://192.168.4.1:81/stream > frame.jpg 2>/dev/null

HTML 嵌入示例:

<!-- 最简用法:直接嵌入 img 标签 -->
<img src="http://192.168.4.1:81/stream" style="width: 100%;" alt="实时画面">

<!-- 带自动重连的完整页面 -->
<!DOCTYPE html>
<html>
<head>
  <title>实时画面</title>
</head>
<body>
  <img id="stream" src="/stream" style="max-width: 100%;"
       onerror="setTimeout(() => this.src='/stream?t='+Date.now(), 3000)">
</body>
</html>

JavaScript 播放控制示例:

const img = document.getElementById('stream');

function startStream() {
  img.src = 'http://<设备IP>:81/stream?t=' + Date.now();
}

function stopStream() {
  img.src = '';  // 断开流连接
}

// 断线自动重连
img.onerror = () => {
  setTimeout(startStream, 3000);
};


GET /api/audio — HTTP 分块音频流

← MJPEG 流 | 设备控制 →


通过 HTTP 分块传输获取实时 G.711 μ-law 音频流。网页预览页面使用此接口进行实时音频监听。

认证:无需认证

来源:audio_stream_handler (web_server.c)

响应头:

Content-Type: application/octet-stream
Transfer-Encoding: chunked
Access-Control-Allow-Origin: *

响应体:G.711 μ-law 编码音频字节流(8 kHz,单声道,20ms 帧 = 160 字节/帧)。

客户端解码:浏览器通过查找表将 μ-law 解码为 16 位 PCM,通过 Web Audio API(AudioContext 8 kHz 采样率)播放。

DSP 管线(固件端):

  1. I2S PDM 采集(DSR_16S,1.024 MHz PDM 时钟,硬件抗混叠)
  2. DC 偏移去除(IIR 滤波器,α≈0.999)
  3. 频谱减法降噪(256 点 FFT,Wiener 增益,最小统计量噪声估计)
  4. 软件增益(4×)+ 硬限幅
  5. 带迟滞的噪声门(开门@300,关门@150)
  6. G.711 μ-law 编码

cURL 示例:

# 采集 3 秒音频
curl --max-time 3 http://<设备IP>/api/audio > audio.g711 2>/dev/null

可访问性增强功能已加载,支持焦点管理、键盘导航和屏幕阅读器
页面已加载完成,可访问性功能已启用
页面已加载完成,可访问性功能已启用