Nginx部署私有Web播放器全指南

1. 概述

本文档旨在指导如何在 Nginx 服务器上部署私有 Web 播放器(基于 hancplayer),并通过 WebSocket 协议接入 RTMS 流媒体服务器,实现低延迟视频实时监控。

2. 前置准备

  • Web 服务器:Nginx (已安装并运行)
  • 流媒体服务:RTMS 服务器 (已运行,端口 5555)
  • 前端文件
    • index.html (播放页面)
    • hancplayer.js (播放器主逻辑)
    • hancmedia.js (媒体处理模块)
    • hancmedia.wasm (WebAssembly 解码核心)

3. 部署步骤

3.1 文件上传

将以下四个文件上传至 Nginx 的站点根目录(例如 /usr/share/nginx/html 或自定义目录),确保它们处于同级目录

  • index.html
  • hancplayer.js
  • hancmedia.js
  • hancmedia.wasm

3.2 关键配置:添加 WASM MIME 类型支持

⚠️ 重要:浏览器加载 .wasm 文件时,要求服务器返回正确的 Content-Type。若未配置,播放器将无法初始化解码器。

验证并重载 Nginx

# 检查配置语法 sudo nginx -t # 重载配置使生效 sudo nginx -s reload

添加映射规则
在 types { ... } 代码块内添加以下行:

types { # ... 其他现有配置 ... application/wasm wasm; }

编辑 Nginx 配置文件
打开全局 MIME 类型配置文件(通常位于 /etc/nginx/mime.types

sudo vim /etc/nginx/mime.types

3.3 修改 HTML 引用路径

编辑 index.html 文件,将播放器脚本的引用地址指向您的 Nginx 服务器地址。

修改前:

<script src="./hancplayer.js"></script>

修改后(示例):

<!-- 将 IP 和端口替换为您实际的 Nginx 地址 --> <script src="http://192.168.0.141:8080/hancplayer.js"></script>

(注:如果 index.html 也托管在同一 Nginx 下,也可以直接使用相对路径 ./hancplayer.js,但需确保所有资源都在同一域下以避免跨域问题)


4. 播放测试

4.1 访问播放页面

在浏览器中访问部署好的 Nginx 地址:

http://192.168.0.141:8080/

(请根据实际 IP 和端口调整)

4.2 输入播放地址

在页面提供的输入框中,填入 RTMS 服务器生成的 WebSocket 播放地址。

URL 格式模板:

ws://<RTMS服务器IP>:<WS端口>/play.pro?cmd=live&ip=<设备IP>&port=<设备端口>&user=<用户名>&pass=<密码>&ftype=<厂家类型>&chan=<通道号>&stream=<码流类型>

测试用例:
假设 RTMS 服务器 IP 为 192.168.0.14,摄像头信息如下:

  • 设备 IP: 192.168.0.222
  • 设备端口: 8000 (海康默认)
  • 用户名: admin
  • 密码: 123456
  • 厂家类型: 0 (海康)
  • 通道号: 1
  • 码流: 0 (主码流)

完整播放地址:

ws://192.168.0.14:5555/play.pro?cmd=live&ip=192.168.0.222&port=8000&user=admin&pass=123456&ftype=0&chan=1&stream=0

4.3 开始播放

  1. 将上述地址粘贴到网页输入框中。
  2. 点击 “实时播放” (或对应按钮)。
  3. 若配置正确,视频画面将在 1-2 秒内加载出来。

5. 常见问题排查 (FAQ)

Q1: 控制台报错 Failed to compile WebAssembly 或 Incorrect response MIME type

  • 原因:Nginx 未识别 .wasm 后缀,返回了错误的 Content-Type。
  • 解决:请严格检查 步骤 3.2,确认 mime.types 中已添加 application/wasm wasm; 且 Nginx 已重载。
  • 验证方法:在浏览器 F12 -> Network 标签页,点击 hancmedia.wasm 请求,查看 Response Headers 中的 Content-Type 是否为 application/wasm

Q2: 视频黑屏或一直加载中

  • 检查网络连通性:确保运行浏览器的电脑能 ping 通 RTMS 服务器 (192.168.0.14) 和 Nginx 服务器 (192.168.0.141)。
  • 检查防火墙:确认 RTMS 服务器的 5555 端口和 Nginx 的 8080 端口已在防火墙放行。
  • 检查参数:确认 URL 中的设备 IP、账号密码、通道号是否正确。可先用 VLC 测试 RTSP 地址是否可用。

Q3: 浏览器控制台报 CORS (跨域) 错误

  • 原因index.html 所在的域名/端口 与 hancplayer.js 或 WS 地址不一致。
  • 解决
    • 尽量让所有资源(HTML, JS, WASM)托管在同一个 Nginx 站点下(同源)。
    • 如果必须跨域,需在 Nginx 配置中添加 add_header Access-Control-Allow-Origin *;

Read more

OpenClaw之Memory配置成本地模式,Ubuntu+CUDA+cuDNN+llama.cpp

文章目录 * 背景:Memory不生效的问题 * OpenClaw的Memory配置 * Ubuntu24.04安装CUDA和cuDNN * 编译llama.cpp * 验证方案1: * 验证方案2:下载并运行Llama-2 7B模型 * 安装node-llama-cpp * 验证Memory * sqlite-vec unavailable * 踩过的坑 * 安装node-llama-cpp的一些提示 * 安装node-llama-cpp的前置条件 * Using `node-llama-cpp` With Vulkan 承接上文:Windows11基于WSL2首次运行Openclaw,并对接飞书应用,我已经在电脑上安装了OpenClaw,接下来解决Memory问题。走了很多弯路,下面主要讲我总结的正确的安装过程。 总结来说:针对Memory不生效的问题,又不想用OpenAI或Gemini,或者只想单纯的节省token,可以按照如下的方式,设置为local模式: * 修改openclaw.json配置 * 安装CUDA和cu

By Ne0inhk
从零搭建哪吒服务器探针-简洁美化查看多端服务器状态

从零搭建哪吒服务器探针-简洁美化查看多端服务器状态

一、准备工作:服务器与域名 1.1 服务器选购建议 哪吒监控分为面板端(Dashboard)和被控端(Agent)。面板端需要部署在一台稳定的服务器上,用于收集和展示所有数据;被控端则安装在你想监控的VPS上。 面板端配置要求极低: CPU:1核即可 内存:512MB够用,1G更从容 硬盘:10GB剩余空间 网络:需要开放8008(Web访问)和5555(Agent通信)端口 选购建议:面板端建议选海外VPS(如香港、美国),避免国内备案繁琐;被控端无所谓,哪里便宜买哪里。 1.2 域名准备 为了安全和方便,强烈建议准备两个子域名解析到面板服务器IP: status.yourdomain.com:用于Web访问面板(可开启CDN) agent.yourdomain.com:用于Agent通信(不要开CDN,避免WebSocket连接问题)

By Ne0inhk
ARM Linux 驱动开发篇--- pinctrl 子系统详解-- Ubuntu20.04

ARM Linux 驱动开发篇--- pinctrl 子系统详解-- Ubuntu20.04

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》   《嵌入式linux驱动开发》《freertos专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 文章目录 * 前言 * 一、pandas是什么? * 二、使用步骤 * 1.引入库 * 2.读入数据 * 总结 前言 在上一期的实战中,我们完成了基于设备树的 LED 驱动开发,但从底层逻辑来看,核心依旧是直接配置 LED 对应的 GPIO 寄存器 —— 这种开发方式,本质上和裸机驱动开发并无二致。 Linux 作为一套成熟、庞大的操作系统,其驱动框架的设计核心就是复用与简化。对于 GPIO 这类最基础、

By Ne0inhk
【网络】TCP 协议深度解析:从连接建立到可靠性机制

【网络】TCP 协议深度解析:从连接建立到可靠性机制

目录 一、引言:TCP——可靠的传输层协议     1.1 TCP的核心定位 二、TCP连接管理:三次握手建连与四次挥手断连     2.1 三次握手:建立可靠连接的基石     2.2 四次挥手:优雅关闭连接的流程     2.3 连接状态转换:客户端与服务端视角 三、TCP协议格式:首部字段与控制逻辑     3.1 TCP首部格式     3.2 关键字段解析 四、TCP可靠性机制:从确认到拥塞控制     4.1 确认应答(ACK):保障数据可达     4.2 超时重传:应对数据丢失     4.3 滑动窗口:提升传输效率     4.4

By Ne0inhk