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

5种生成模型(VAE、GAN、AR、Flow 和 Diffusion)的对比梳理 + 易懂讲解 + 代码实现

5种生成模型(VAE、GAN、AR、Flow 和 Diffusion)的对比梳理 + 易懂讲解 + 代码实现

目录 1 变分自编码器(VAE) 1.1 概念 1.2 训练损失 1.3 VAE 的实现 2 生成对抗网络(GAN) 2.1 概念 2.2 训练损失 a. 判别器的损失函数 b. 生成器的损失函数 c. 对抗训练的动态过程 2.3 GAN 的实现 3 自回归模型(AR) 3.1 概念 3.2 训练过程 a.核心思想: 用历史预测未来 b. Transformer 的损失计算:交叉熵监督预测 c.

积木报表快速入门指南:零基础轻松上手数据可视化【低代码报表设计器】

积木报表快速入门指南:零基础轻松上手数据可视化【低代码报表设计器】

文章目录 * 前言 * 一、积木报表简介 * 二、环境准备 * 1. 下载积木报表 * 2. 运行环境要求 * 3. 快速启动(以Docker方式为例) * 三、第一个报表创建实战 * 1. 登录系统 * 2. 选择数据源 * 3. 设计报表 * 四、进阶功能快速上手 * 1. 图表集成 * 2. 参数传递 * 3. 分组与汇总 * 4. 导出与打印 * 五、实用技巧与最佳实践 * 1. 性能优化: * 2. 模板复用: * 3. 移动端适配: * 4. 定时任务: * 六、常见问题解答 * Q1:积木报表支持哪些数据库? * Q2:如何实现复杂的中国式报表? * Q3:能否集成到自己的系统中? * Q4:

OmniSteward:LLM Agent 赋能,语音文字随心控,智能家居与电脑的超级管家

OmniSteward:LLM Agent 赋能,语音文字随心控,智能家居与电脑的超级管家

目录 * 一、前言 * 二、项目概述 * 三、功能特性 * 四、技术架构 * 五、安装与使用 * 1、系统要求 * 2、安装步骤 * 3、环境变量配置 * 4、启动方式 * 4.1 命令行模式(CLI) * 4.2 Web模式 * 六、应用场景与未来展望 * 七、结语 一、前言 在科技日新月异的今天,人工智能正以前所未有的速度改变着我们的生活方式。从智能手机的语音助手到智能家居的自动化控制,AI技术逐渐渗透到生活的各个角落,为我们带来了便捷与高效。OmniSteward正是在这样的背景下应运而生,它作为一款基于大语言模型的全能AI管家系统,致力于打破人机交互的壁垒,为用户打造一个智能、高效、便捷的生活和工作环境。无论是忙碌的上班族希望在工作中提高效率,还是追求高品质生活的家庭用户渴望轻松掌控家居设备,OmniSteward都有可能成为他们理想的智能伙伴,引领我们进入一个全新的智能生活时代。 二、项目概述 OmniSteward是一个正在积极开发中的全能管家系统,

Windows 安装 Neo4j(2025最新·极简)

Windows 安装 Neo4j(2025最新·极简)

目录 1. 准备 2. 下载安装包 3. 一键安装 4. 启动 Neo4j 5.安装 Neo4j 的系统服务 Neo4j 是目前最流行的原生图数据库,用图结构(节点-关系-属性)存储数据,而非传统表结构。它专为海量关联数据设计,提供: * 原生图存储:基于免索引邻接结构,每个节点直接维护指向相邻节点的物理指针,实现 O(1) 时间复杂度的图遍历。 * Cypher 查询语言:ISO 标准化图查询语言,采用 ASCII-Art 模式匹配语法,支持可变长度路径、子图查询、聚合与更新混合事务。 * ACID 事务:支持完整事务、集群高可用,可承载企业级负载。 * 丰富生态:内置 Graph Data Science (GDS)