Electron笔记五:无需控件,HTML5直接播放rtsp(摄像头)

本文介绍了如何使用Electron、FFMPEG、JSMPEG和WebSocket实现在HTML5中直接播放RTSP摄像头流。通过node-media-server和ffmpeg搭建直播推流服务,然后结合FFMPEG+JSMPEG+Nodejs创建web流媒体方案,最终在Electron应用中展示视频流。
摘要由CSDN通过智能技术生成

本人初学Electron,把学习的过程记录了下来,以免以后忘记
Electron笔记一:安装
Electron笔记二:http与websock的实现
Electron笔记三:调用外部程序(子进程管理)
Electron笔记四:Dll的调用
Electron笔记五:无需控件,HTML5直接播放rtsp(摄像头)
Electron笔记六:打包成可执行程序(.exe)

Electron笔记七:全部源代码

在写之前可以先看一下实际的效果

为了实现页面直接播放视频,我找了很多资料

  1.node-media-server+ffmpeg搭建直播推流服务

     访问:https://blog.csdn.net/Aimee1608/article/details/103633024 可看具体情况

    主是是实现rtmp推流

// Modules to control application life and create native browser window
const {app, BrowserWindow} = require('electron')
const path = require('path')


// main.js 部分功能代码
const ffmpeg = require('fluent-ffmpeg');
const NodeMediaServer = require('node-media-server');
var ffmpegPath = "./ffmpeg-4.2.1-win64-static/bin/ffmpeg.exe";

// rtmp 播放 服务器
  const config = {
    rtmp: {
      port: 1938,
      chunk_size: 60000,
      gop_cache: true,
      ping: 60,
      ping_timeout: 30
    },
    http: {
      port: 18000,      
      allow_origin: '*'     
    }
  };
  var nms = new NodeMediaServer(config)
  nms.run();

// 转码指令
const uri = 'rtsp://admin:12345@192.168.0.6:554/PSIA/streaming/channels/101' //测试
var command = ffmpeg(uri)
    .setFfmpegPath(ffmpegPath)
    .outputOptions([
      '-fflags',
      'nobuffer',
      '-vcodec',
      'libx264',
      '-preset',
      'superfast',
      '-rtsp_transport',
      'tcp',
      '-threads',
      '2',
      // '-f',
      // 'flv',
      '-r',
      '25',
      // '-s',
      // '640x480',
      //'1280x720',
      '-an'
    ])
    .inputFPS(25)
    .noAudio()
    .size('640x?')
    .aspect('4:3')
    .format('flv')
    // 此处的 /live/camera, camera类似于一个房间的概念, 你可以设置为你想要的名字
    .save(`rtmp://localhost:1938/live/livestream`)

    .on('start', function (e) {
      running = true
      console.log('stream is start: ' + e)
      console.log("start command......." + command);
    })
    .on('end', function () {
      running = false
      console.log('ffmpeg is end')
    })
    .on('error', function (err) {
      running = true
      console.log('ffmpeg is error! ' + err)
      // command.kill()
      //reloadStream(uri)
    })

       用vlc播放器可以播放,只是现在浏览器都不支持flash了,直接播放不了了,因此这条道路走不通。

2.基于FFMPEG+JSMPEG+Nodejs的web流媒体方案

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值