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