vue添加rtsp转flv解决方案


  1. vue-webSocket转码配置
const express =  require("express");
const expressWebSocket = require("express-ws");
const ffmpeg = require("fluent-ffmpeg");
ffmpeg.setFfmpegPath("C:/bin/ffmpeg");
const webSocketStream = require("websocket-stream/stream");
const WebSocket = require("websocket-stream");
const http = require("http");
let app = express();
app.use(express.static(__dirname));
expressWebSocket(app, null, {
  perMessageDeflate: true
});
app.ws("/rtsp/:id/", rtspRequestHandle);
app.listen(8091);
console.log("express listened");
function rtspRequestHandle(ws, req) {
  console.log("rtsp request handle");
  let url = req.query.url;
  const stream = webSocketStream(ws, {
    binary: true,
    browserBufferTimeout: 1000000
  }, {
    browserBufferTimeout: 1000000
  });
  // console.log("rtsp url:", url);
  //console.log("rtsp params:", req.params);
  var ffmpegCommand=ffmpeg(url)
    .inputOptions(['-r 30','-rtsp_transport tcp', '-buffer_size 102400', '-fflags nobuffer','-analyzeduration 1000000'])  // 这里可以添加一些 RTSP 优化的参数
    .outputOptions(['-fflags nobuffer', '-tune zerolatency','-g 5' ,'-b:v 700000'])
    .on("start", function () {
      console.log(url, "Stream started.");
    })
    .on("codecData", function () {
      console.log(url, "Stream codecData.")
      // 摄像机在线处理
    })
    .on("error", function (err) {
      console.log(url, "An error occured: ", err.message);
    })
    .on("end", function () {
      console.log(url, "Stream end!");
      // 摄像机断线的处理
    })
    .outputFormat("flv").videoCodec("copy").noAudio();
  try {
    ffmpegCommand.pipe(stream);
  } catch (error) {
    console.log(error);
  }
}
  1. 服务依赖
    npm install express express-ws fluent-ffmpeg websocket-stream -S -D
    npm install flv.js -S -D


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM