当前位置:网站首页>在web页面播放rtsp流视频(webrtc)
在web页面播放rtsp流视频(webrtc)
2022-08-10 12:09:00 【祁_z】
所需环境
node.js + FFmpeg
此方式客户端只需要通过canvas标签就可播放
ffmpeg下载链接:https://pan.baidu.com/s/1ntOVSpxmtHO861V-dT5Kyg?pwd=nx7y
提取码:nx7y
FFmpeg环境安装
1. 安装FFmpeg的依赖yasm
yum方式安装yasm,也可以通过Download - The Yasm Modular Assembler Project下载安装,下载完后进行编译、安装
yum install yasm -y
# 编译
./configure
# 安装
make && make install
2. 安装FFmpeg
wget获取ffmpeg,有可能下载不下来,建议用我提供的ffmpeg-4.1.8.tar.bz2 手动上传到服务器。
补充:ffmpeg-4.1.8.tar.bz2 有可能解压失败,可以点击 下载 ffmpeg-4.1.8.tar 格式压缩包
通过: tar -xf ffmpeg-4.1.8.tar 命令进行安装。
# 下载ffmpeg-4.1.8.tar.bz2
wget https://ffmpeg.org/releases/ffmpeg-4.1.8.tar.bz2
# 解压
tar -xjvf ffmpeg-4.1.8.tar.bz2
# 进入解压目录
cd ffmpeg-4.1.8
# 编译
./configure
# 安装
make && make install
3. 验证是否安装成功
输入ffmpeg命令,查看控制台是否有输出,有则代表安装ffmpeg成功。
NodeJS环境安装
1. NodeJS的安装步骤忽略。。
2. 安装rtsp2web插件
# 创建一个目录,目录名称不能是rtsp2web,进入目录执行以下命令安装rtsp2web插件
npm init --yes
npm i rtsp2web
3. 创建 index.js,并运行
启动命令 node index.js
后台启动命令nohup node index.js &
// index.js 内容
const RTSP2web = require('rtsp2web');
// 服务端长连接占据的端口号;端口号可以自定义
const port = 9999;
new RTSP2web({port});
至此视频转码服务安装完成。
验证页面html播放实时视频
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no,viewport-fit=cover">
<script src="https://jsmpeg.com/jsmpeg.min.js" charset="utf-8"></script>
<title>播放rtsp</title>
</head>
<body>
<canvas id="canvas" style="width: 600px; height: 600px;"></canvas>
</body>
<script>
// 改成你的rtsp流
var rtsp = 'rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mp4'
window.onload = () => {
// location为node服务所在的服务地址,端口为rtsp2web设置的端口
new JSMpeg.Player("ws://localhost:9999/rtsp?url="+btoa(rtsp), {
canvas: document.getElementById("canvas")
})
}
</script>
</html>
将该html copy到桌面打开看看效果。
边栏推荐
- 一文详解 implementation api embed
- iTextSharp 使用详解
- 人脸考勤是选择人脸比对1:1还是人脸搜索1:N?
- Dining (网络流)
- 如何培养ui设计师的设计思维?
- Data Analysis of Time Series (5): Simple Prediction Method
- ArcMAP出现-15的问题无法访问[Provide your license server administrator with the following information:Err-15]
- [Collection] HashSet and ArrayList lookup Contains() time complexity
- CV复习:空洞卷积
- phpstrom 快速注释:
猜你喜欢
面试美团被问到了Redis,搞懂这几个问题,让你轻松吊打面试官
Crypto Gaming: The Future of Gaming
Behind IDC's No. 1 position, what kind of "video cloud" is Alibaba Cloud building?
Keithley DMM7510精准测量超低功耗设备各种运作模式功耗
九宫格抽奖动效
百度用户产品流批一体的实时数仓实践
Custom filters and interceptors implement ThreadLocal thread closure
CV复习:空洞卷积
CURRENT_TIMESTAMP(6) 函数是否存在问题?
人脸考勤是选择人脸比对1:1还是人脸搜索1:N?
随机推荐
漏洞管理计划的未来趋势
Dining (网络流)
search--09
Dining (web stream)
You have a Doubaqiong thesaurus, please check it
Deploy the project halfway through the follow-up
Educational Codeforces Round 41 (Rated for Div. 2) E. Tufurama
时间序列的数据分析(五):简单预测法
娄底农产品检验实验室建设指南盘点
MySQL相关问题整理
H264 码率控制
动态规划之最长回文子串
CodeForces - 628D (数位dp)
一文详解 implementation api embed
太香了!自从用了这款接口神器,我的团队效率提升了 60%!
基于PLECS的离网(孤岛)并联逆变器的Droop Control下垂控制仿真
可视化服务编排在金融APP中的实践
[List merge] Combine multiple lists into one list
百度用户产品流批一体的实时数仓实践
娄底疾控中心实验室设计理念说明