//   openVlcStream,
//   closeCameraRTSP,
//     VideoMonitorProcess,

const ktVlcStream = require('./ktVlcStream');
const RtspServer = require('./rtspServer');
// 定义默认选项
let optionsDefault = {
  videoDevicePath: '', // 视频流串口地址
  streamType: 1, //  1:rtsp视频流 2:http视频流
  autoCloseTime: 60 * 3, //  自动关闭时间，单位：秒 0:不关闭 默认3分钟
  localIp: '', //  本机IP
  port: 8554, // 视频流端口
  StreamingTool: 'vlc', //推流工具vlc   ffmpeg
  suffix: '',
};
let stateOptions = {};
// 定义VLC关闭时间变量
let vlcCloseTime = null;
function openVlcStream(options, callback, exitCallback) {
  stateOptions = { ...optionsDefault, ...options };
  setTimeoutCloseStream();
  if (stateOptions.StreamingTool == 'ffmpeg') {
    RtspServer.start(options, exitCallback).then((res) => {
      if (res && res.state) {
        callback({
          state: true, //  true:开启成功 false:开启失败
          message: '启动推流正常', //  状态信息
          streamUrl: res.rtsp, // 视频流地址
          port: options.port,
        });
      } else {
        callback({
          state: false, //  true:开启成功 false:开启失败
          message: '启动推流异常', //  状态信息
          streamUrl: null, // 视频流地址
        });
      }
    });
  } else {
    ktVlcStream.openVlcStream(stateOptions, callback, exitCallback);
  }
}

function closeCameraRTSP() {
  RtspServer.stop();
  ktVlcStream.closeCameraRTSP();
}
/**
 * 延时关闭视频流
 * @param {*} options
 */
function setTimeoutCloseStream() {
  if (vlcCloseTime) {
    clearTimeout(vlcCloseTime);
    vlcCloseTime = null;
  }
  // 根据自动关闭时间设置延时关闭
  if (stateOptions.autoCloseTime && stateOptions.autoCloseTime > 0) {
    vlcCloseTime = setTimeout(() => {
      closeCameraRTSP();
    }, stateOptions.autoCloseTime * 1000);
  }
}
module.exports = {
  openVlcStream,
  closeCameraRTSP,
};
