跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
HTML / CSS大前端

Nginx 部署私有 Web 播放器配置指南

Nginx 部署私有 Web 播放器需上传前端资源文件并配置 WASM MIME 类型。通过 WebSocket 接入 RTMS 流媒体服务器实现低延迟监控。常见故障包括 WASM 编译错误、视频黑屏及跨域问题,可通过检查 Nginx 配置、网络连通性及 CORS 设置解决。

协议工匠发布于 2026/3/24更新于 2026/9/969 浏览

概述

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

前置准备

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

部署步骤

文件上传

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

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

关键配置:添加 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

修改 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,但需确保所有资源都在同一域下以避免跨域问题)

播放测试

访问播放页面

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

http://192.168.0.141:8080/

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

输入播放地址

在页面提供的输入框中,填入 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

开始播放

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

常见问题排查 (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 *;。

目录

  1. 概述
  2. 前置准备
  3. 部署步骤
  4. 文件上传
  5. 关键配置:添加 WASM MIME 类型支持
  6. 检查配置语法
  7. 重载配置使生效
  8. 修改 HTML 引用路径
  9. 播放测试
  10. 访问播放页面
  11. 输入播放地址
  12. 开始播放
  13. 常见问题排查 (FAQ)
  14. Q1: 控制台报错 Failed to compile WebAssembly 或 Incorrect response MIME type
  15. Q2: 视频黑屏或一直加载中
  16. Q3: 浏览器控制台报 CORS (跨域) 错误

更多推荐文章

查看全部
  • Stable Yogi 皮衣穿搭生成工具本地部署与使用指南
  • OpenClaw 基础:Telegram 机器人配置与加入群聊
  • 基于 Go 与 DeepSeek 的 AIOps 监控系统实战
  • 从 C 到 Modern C++:核心机制与技术复盘
  • 基于 MS-Swift 框架的 DeepSeek-R1 部署与微调指南
  • Ubuntu 后端服务彻底卸载与安全清理指南
  • C++ 泛型编程与模板技术详解
  • 动态规划:单词拆分问题详解
  • Gradle 增量式构建原理与实战
  • LLaMA Factory 实现 LLMs 指令监督微调 (SFT) 完整工作流程
  • Neo4j 图数据库安装与操作指南
  • 使用 Higress 将 REST API 转换为 MCP Server 工具
  • AI 辅助编程:工具使用与实战技巧
  • Python 入门指南:基于爬虫技术的零基础学习路径
  • Neo4j Desktop 2 安装与使用指南
  • C++ 面向对象:深入解析继承机制
  • 基于 FPGA 的 CLAHE 自适应限制对比度直方图均衡算法硬件 Verilog 实现
  • Maven 高级特性:继承、聚合与私服配置
  • 预训练语言模型与 BERT 实战应用
  • 基于舵机与 3D 打印的低成本机械臂末端执行器设计

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online