zoukankan      html  css  js  c++  java
  • ffmpeg + jsmpeg + node 实现单路 or 多路低延时直播 ( mac )

    前提:视频流格式采用 海康nvr摄像头的rtsp流;

    默认格式为 rtsp://账号:密码@ip地址   举个栗子:  rtsp://mifan:1234567@172.16.154.198

    目标:实现h5中视频低延迟视频播放

    环境准备:

    • nodejs + http-server(客户端网页容器)  网上安装教程超多,可自行百度
    • fmpeg(向jsmpeg服务端推流) mac中安装可参考 https://www.jianshu.com/p/f6990aee6c7f
    • jsmpeg(流转成websocket)  jsmpeg 点击下载
    • 一个rtsp视频流 (也可以是本地视频文件)

     安装websocket和http-server

    npm install -g ws
    npm install ws
    npm install http-server -g

    1、单路直播  (webscoket-replay.js)

    1.1 启动 jsmpeg

    打开一个命令行,进入jsmpeg目录,运行:

    node websocket-relay.js supersecret 8081 8082

    参数说明:

    • Supersecret 是密码
    • 8081 是ffmpeg推送端口
    • 8082 是前端webSocket端口

    1.2 启动ffmpeg推流

    再起一个服务 开始推流

    ffmpeg -I "rtspurl节目源地址" -q 0 -f mpegts -codec:v mpeg1video -s 1366x768 http://127.0.0.1:8081/supersecret

    1.3 启动一个http-server
    再打开一个命令行进入jsmpeg目录,输入:

    http-server

    1.4 用浏览器打开网址

    http://ip:8080/view-stream.html

    正常就能看到视频画面了。

    2、多路直播

    简单描述下原理, 客户端页面连接websocket将需要查看的直播地址传递过来,websocket服务端通过[FFMPEG],
    将直播视频转码为 mpegts 格式发送给客户端, 客户端通过jsmpeg,解码数据 通过canvas 将直播画面绘制在页面上;
    但是经测试,停留时间过久,会出现延迟现象,并且同个端口目前浏览器限制为最多6路(可开启http2.0多路复用),本次测试1个端口下分配2路,多路需自行指定相应端口;


    详细代码请移步:https://github.com/fanmx/rtsp-jsmpeg 

  • 相关阅读:
    oracle热备份与冷备份的对比
    oracle数据库备份
    shell 去除空行
    已有实例 Oracle 下新增实例(2)通过dbca克隆实例
    oracle启动,提示“LRM-00109: could not open parameter file”
    linux——使用fidsk对linux硬盘进行操作【转】
    前端——知识点
    hdu 3996 Gold Mine 最大权闭合子图
    hdu 3917 Road constructions 最大权闭合子图
    poj 2987 Firing 最大权闭合子图
  • 原文地址:https://www.cnblogs.com/fmixue/p/15105395.html
Copyright © 2011-2022 走看看