
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Node-Media-Server是一个基于Node.js实现的媒体服务器,支持RTMP、HTTP-FLV、WS-FLV、HLS、DASH等多种音视频流协议。它提供了实时音视频流的接收、转发、转码、分发及管理功能,可跨Windows、Linux、Unix等平台部署,适用于直播平台、视频监控系统、实时视频会议等需要高效处理实时音视频流的场景。
bashdocker run --name nms -d -p 1935:1935 -p 8000:8000 -p 8443:8443 illuspas/node-media-server
npx快速启动
bashnpx node-media-server
全局安装
bashnpm i node-media-server -g node-media-server
npm集成(推荐)
bashmkdir nms && cd nms npm install node-media-server
app.jsjsconst NodeMediaServer = require('node-media-server'); const config = { rtmp: { port: 1935, chunk_size: 60000, gop_cache: true, ping: 30, ping_timeout: 60 }, http: { port: 8000, allow_origin: '*' } }; var nms = new NodeMediaServer(config) nms.run();
bashnode app.js
使用FFmpeg发布
bashffmpeg -re -i INPUT_FILE_NAME -c copy -f flv rtmp://localhost/live/STREAM_NAME
bashffmpeg -re -i INPUT_FILE_NAME -c:v libx264 -preset veryfast -tune zerolatency -c:a aac -ar 44100 -f flv rtmp://localhost/live/STREAM_NAME
使用OBS发布
设置 > 流自定义流媒体服务器rtmp://localhost/liveSTREAM_NAME(自定义流名称)确定并开始推流支持的协议格式
rtmp://localhost/live/STREAM_NAMEhttp://localhost:8000/live/STREAM_NAME.flvws://localhost:8000/live/STREAM_NAME.flvhttp://localhost:8000/live/STREAM_NAME/index.m3u8http://localhost:8000/live/STREAM_NAME/index.mpd使用flv.js播放示例
通过HTTP-FLV播放
html<script src="https://cdn.bootcss.com/flv.js/1.5.0/flv.min.js"></script> <video id="videoElement"></video> <script> if (flvjs.isSupported()) { var videoElement = document.getElementById('videoElement'); var flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'http://localhost:8000/live/STREAM_NAME.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); } </script>
通过WS-FLV播放
html<script src="https://cdn.bootcss.com/flv.js/1.5.0/flv.min.js"></script> <video id="videoElement"></video> <script> if (flvjs.isSupported()) { var videoElement = document.getElementById('videoElement'); var flvPlayer = flvjs.createPlayer({ type: 'flv', url: 'ws://localhost:8000/live/STREAM_NAME.flv' }); flvPlayer.attachMediaElement(videoElement); flvPlayer.load(); flvPlayer.play(); } </script>
日志配置
通过logType控制日志输出级别(0-3):
配置示例:
jsconst config = { logType: 3, // 调试模式 rtmp: { ... }, http: { ... } };
认证配置
支持URL签名认证,配置示例:
jsconst config = { rtmp: { ... }, http: { ... }, auth: { play: true, // 播放认证 publish: true, // 发布认证 secret: 'your_private_key' // 密钥 } };
认证URL格式:rtmp://hostname:port/appname/stream?sign=expires-HashValue(expires为时间戳,HashValue为MD5哈希值)
HTTPS/WSS配置
bashopenssl genrsa -out privatekey.pem 1024 openssl req -new -key privatekey.pem -out certrequest.csr openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem
jsconst config = { rtmp: { ... }, http: { ... }, https: { port: 8443, key: './privatekey.pem', cert: './certificate.pem' } };
转码与中继配置
支持HLS/DASH转码、RTSP/RTMP中继,配置示例(转码为HLS/DASH):
jsconst config = { rtmp: { ... }, http: { port: 8000, mediaroot: './media', // 媒体文件存储路径 allow_origin: '*' }, trans: { ffmpeg: '/usr/local/bin/ffmpeg', // ffmpeg路径 tasks: [ { app: 'live', // 应用名称 hls: true, // 启用HLS hlsFlags: '[hls_time=2:hls_list_size=3:hls_flags=delete_segments]', // HLS参数 dash: true, // 启用DASH dashFlags: '[f=dash:window_size=3:extra_window_size=5]' // DASH参数 } ] } };
服务启动后,可通过http://server_ip:8000/admin访问管理面板,支持流监控、预览及配置管理。
支持多种事件回调,可用于流状态监控和业务逻辑处理,示例:
jsnms.on('prePublish', (id, StreamPath, args) => { console.log('[事件回调 prePublish]', `id=${id} 流路径=${StreamPath} 参数=${JSON.stringify(args)}`); // 可在此处拒绝发布:session.reject() }); nms.on('postPlay', (id, StreamPath, args) => { console.log('[事件回调 postPlay]', `id=${id} 流路径=${StreamPath} 参数=${JSON.stringify(args)}`); });
启用API认证后,可通过HTTP接口获取服务器状态和流信息:
http://localhost:8000/api/serverhttp://localhost:8000/api/streamsAPI认证配置:
jsconst config = { auth: { api: true, api_user: 'admin', // API用户名 api_pass: 'your_password' // API密码 } };
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务