You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Node-Media-Server的停止与重启?直播流停止功能开发

如何停止并重启Node-Media-Server

我来帮你搞定Node-Media-Server的完整停止再重启功能!结合你提供的配置和启动代码,咱们可以通过以下步骤实现:

1. 彻底停止当前运行的Node-Media-Server

Node-Media-Server的实例自带了stop()方法,能关闭所有监听的端口(RTMP、HTTP)以及终止relay任务。关键是要在停止完成的回调里再执行重启操作,避免端口占用问题:

// 调用stop方法停止服务,传入回调确认停止完成
nms.stop(() => {
  console.log("Node-Media-Server已完全停止");
  // 在这里触发重启逻辑
});

2. 重新启动新的服务实例

停止完成后,咱们需要重新初始化一个NodeMediaServer实例并启动。注意不要直接复用旧的nms变量,重新创建能确保使用最新的配置(如果你的配置有动态修改的话):

完整的重启函数示例

// 定义重启函数,兼顾首次启动和后续重启场景
function restartNodeMediaServer() {
  if (nms) {
    // 已有运行实例,先停止
    nms.stop(() => {
      console.log("旧服务实例已停止,开始启动新实例");
      // 重新初始化实例并启动
      nms = new NodeMediaServer(config);
      nms.run();
      console.log("Node-Media-Server重启完成!");
    });
  } else {
    // 还未启动过,直接初始化并启动
    nms = new NodeMediaServer(config);
    nms.run();
    console.log("Node-Media-Server首次启动完成!");
  }
}

// 调用重启函数
restartNodeMediaServer();

几个重要的注意点

  • 必须等待停止完成再重启:如果跳过回调直接启动新实例,很可能遇到端口被旧实例占用的错误,因为端口释放需要一定时间。
  • 动态配置更新自动生效:如果你的config(比如摄像头RTSP地址)在重启前有修改,新实例会自动使用更新后的配置,不需要额外处理。
  • 日志辅助调试:你设置的logType: 3会输出详细的日志,能帮你清晰看到停止和启动的每一步,方便排查问题。

内容的提问来源于stack exchange,提问作者user_66663333

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:46:02