ffmpeg + jsmpeg + node 实现单路 or 多路低延时直播 ( mac )
2021/8/13 20:05:59
本文主要是介绍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
这篇关于ffmpeg + jsmpeg + node 实现单路 or 多路低延时直播 ( mac )的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15useCallback教程:React Hook入门与实践
- 2024-11-15React中使用useContext开发:初学者指南
- 2024-11-15拖拽排序js案例详解:新手入门教程
- 2024-11-15React中的自定义Hooks案例详解
- 2024-11-14受控组件项目实战:从零开始打造你的第一个React项目
- 2024-11-14React中useEffect开发入门教程
- 2024-11-14React中的useMemo教程:从入门到实践
- 2024-11-14useReducer开发入门教程:轻松掌握React中的useReducer
- 2024-11-14useRef开发入门教程:轻松掌握React中的useRef用法
- 2024-11-14useState开发:React中的状态管理入门教程