浏览器播放RTSP摄像头视频

article/2025/9/12 22:31:02

一、项目需求,需要在chrome浏览器中播放rtsp协议的摄像头视频流

二、思路:
1、chrome已经不支持插件了,所以排除一切插件的思路;
2、浏览器目前停留在支持rtmp协议,hls协议流视频阶段,还没开始支持rtsp协议,所以可以考虑将rtsp转成rtmp和hls。在领导的指导下,选择的是rtmp,至于hls有兴趣的同学可以自己去研究,整体思路与转rtmp是一直的。
3、有了大体方向就开始着手找资料了,网上有很多使用FFmpeg+nginx来将rtsp转rtmp的,当然也有可以花钱去买转码器的,那就更加方便了。(转码器也不是很贵,项目资金充足的,而且不想花时间研究的,可以考虑这个会更好);

三、实现:
3.1、rtsp公网测试例子:rtsp://184.72.239.149/vod/mp4:BigBuckBunny_175k.mov
3.2、FFmpeg:
3.2.1 资源下载:通过官网http://www.ffmpeg.org/download.html或其他途径下载ffmpeg(https://ffmpeg.zeranoe.com/builds),解压到随意目录下,解压之后如下图:
在这里插入图片描述
3.2.2配置环境变量,在这里插入图片描述命令窗口输入“ffmpeg -version”出现如下图及说明环境配置正确
在这里插入图片描述

3.3、nginx:
3.3.1、安装配置nginx,配置已经配置好了,直接下载即可使用。nginx包和配置文件
在这里插入图片描述
3.3.2、修改conf文件夹下nginx.conf文件,文件内容如下:

worker_processes  1;error_log  logs/error.log debug;events {worker_connections  1024;
}rtmp {server {listen 1935;chunk_size 4000;application live {live on;}application hls {live on;hls on;  hls_path temp/hls;  hls_fragment 8s;  }}
}http {include        mime.types;default_type    application/octet-stream;sendfile        on;keepalive_timeout    65;server {listen      20000;location / {root html;index    index.html index.htm;}location /stat {rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location /stat.xsl {root html;}location /hls {  #server hls fragments  types{  application/vnd.apple.mpegurl m3u8;  video/mp2t ts;  }  alias temp/hls;  expires -1;  }error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}
}

3.3.3、修改完成后启动nginx,
有多种方式启动nginx,(1)、直接双击nginx.exe,双击后一个黑色的弹框一闪而过,(2)、打开cmd命令窗口,切换到nginx解压目录下,输入命令nginx.exe或者start nginx,回车即可
检查nginx是否启动成功:
直接在浏览器中输入网址http:localhost:post,post为nginx.conf中设置的,此处我设置的是20000,回车出现如下
在这里插入图片描述
说明启动成功了。

3.3.4、关闭nginx:
如果使用cmd命令窗口启动nginx,关闭cmd窗口是不能结束nginx进程的,可使用两种方法关闭nginx
(1)、输入nginx命令 nginx -s stop(快速停止nginx)或者nginx -s quit(完整有序的停止nginx)
(2)使用taskkill taskkilll /f /t /im nginx.exe
**3.3.5、**nginx还可以做负载均衡,此处没有研究,有需求的同学可自行研究。

3.3.6、开始转码:
在cmd窗口执行如下命令

ffmpeg -re  -rtsp_transport tcp -i "rtsp地址" -f flv -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 "rtmp://本机地址:1935(nginx.conf的rtmp模块下listen)/live(rtmp模块下application设置)/test(随便取名字)"

启动之后如下图:
在这里插入图片描述
注意:
1、ffmpeg转码与nginx代理可以不在同一台服务器上进行,但这种情况对带宽要求较高
2、如果rtsp视频流断开,可能导致转码程序一直等待,因此加入-stimeout参数(表示超时时间),如果超时未获取到视频流,则报错退出(如需重新获取,可以写个bat脚本,循环执行ffmpeg命令)

3.4、chrome中播放rtmp实时流:
H5的video标签是不支持rtmp的,但是我们有video.js可以解决这一问题。然而在使用video.js的时候遇到了问题,刚开始怎么都播不出来,后来经过一番查找发现,在video.js 6以上的版本是已经没法播放了。原因是video.js播放rtmp的原理还是通过flash。可能是video为了紧跟步伐,去掉了flash。
代码包请点击这里下载
将代码修改如下:
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Access-Control-Allow-Origin" content="*"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><title>测试rtmp直播源</title>
<script src="js/video.js"></script>
<link href="css/video-js.css" rel="stylesheet">
<!-- If you'd like to support IE8 -->
<script src="js/videojs-ie8.min.js"></script>
</head>
<body>
<div class="openFlashTips" style="width:300px;position:absolute;top:20px;left:225px;z-Index:9999;color:white">视频无法正常播放,请点击下方启用flash</div>
<video id="my-video" style="color:black;width:750px;height:350px" class="video-js" autoplay controls preload="auto" width="750" height="350" data-setup="{}"><source src='rtmp://172.16.15.240:1935/live/test11' type='rtmp/flv'/>
</video>
<embed width="300" height="70" class="openFlash" style="position:absolute;top:130px;left:225px;z-Index:9999;" type="application/x-shockwave-flash">
<script type="text/javascript" language="JavaScript">function flashChecker() {var hasFlash = 0;         //是否安装了flashvar flashVersion = 0; //flash版本var isIE = /*@cc_on!@*/0;      //是否IE浏览器if (isIE) {var swf = new ActiveXObject('ShockwaveFlash.ShockwaveFlash');if (swf) {hasFlash = 1;VSwf = swf.GetVariable("$version");flashVersion = parseInt(VSwf.split(" ")[1].split(",")[0]);}} else {if (navigator.plugins && navigator.plugins.length > 0) {var swf = navigator.plugins["Shockwave Flash"];if (swf) {hasFlash = 1;var words = swf.description.split(" ");for (var i = 0; i < words.length; ++i) {if (isNaN(parseInt(words[i]))) continue;flashVersion = parseInt(words[i]);}}}}return {f: hasFlash, v: flashVersion};}var fls = flashChecker();var s = "";if (fls.f) {document.getElementsByClassName("openFlash")[0].style.display = "none";document.getElementsByClassName("openFlashTips")[0].style.display = "none";
//        document.write("您安装了flash,当前flash版本为: " + fls.v + ".x");}else {document.getElementsByClassName("openFlash")[0].style.display = "block";document.getElementsByClassName("openFlashTips")[0].style.display = "block";
//        document.write("您没有安装flash");}
</script>
</body>
</html>

启动tomcat,在浏览器中输入网址即可查看实时视频(如下图的测试视频)。
在这里插入图片描述
正式环境测试效果:转码之后差不多延迟在3-5秒左右。
在这里插入图片描述
欢迎大家一起交流,如果文章中有错误的地方,也希望指正。


http://chatgpt.dhexx.cn/article/XibFuetI.shtml

相关文章

浏览器播放RTSP视频流几种解决方案

方案一: H5 websocket_rtsp_proxy 实现视频流直播 Streamedian 提供了一种“html5_rtsp_player websock_rtsp_proxy”的技术方案&#xff0c;可以通过html5的video标签直接播放RTSP的视频流。 整个架构如下图所示&#xff0c;分为服务器端和浏览器端两部分&#xff1a; 方案…

浏览器播放视频导致蓝牙耳机断开关机解决(漫步者W800BT)

参考链接&#xff1a;https://blog.csdn.net/weixin_44467131/article/details/111328638 原因&#xff1a;浏览器对硬件的的访问控制。 edge/chrome://flags搜索 media&#xff0c;找到这个&#xff0c;然后选择 Disabled&#xff0c;重启浏览器即可。

浏览器播放RTSP、RTMP等几种编码格式视频流

项目需求&#xff0c;需要前端页面实时展示摄像头采集的视频&#xff0c;视频啊&#xff0c;之前一点没接触过&#xff0c;经过一番调研、尝试&#xff0c;不得不说&#xff0c;网上文章真的大同小异&#xff0c;踩过许多坑&#xff0c;整理如下。 一、科普一下 1.流程 2.常见…

【vue】浏览器播放提示音audio

方法一&#xff1a;修改浏览器配置 代码 <audiocontrols"controls"hiddensrc"../../static/alert.mp3"ref"audio" ></audio>this.$refs.audio.currentTime 0; //从头开始播放提示音 this.$refs.audio.play(); //播放chrome配置允…

浏览器播放语音SpeechSynthesisUtterance

目的&#xff1a;因为公司项目需要来浏览器播放语音&#xff0c;看了科大讯飞的产品&#xff0c;后面有发现html5有原生的api&#xff0c;更加方便&#xff0c;所以使用了 一、语音合成和语音识别 “语音识别(Speech Recognition)”目前的就Chrome浏览器和Opera浏览器默认支持…

使用 Nginx 服务器配置 flv、mp4,可以直接浏览器播放

由于需求&#xff0c;需要提供浏览器播放 mp4 和 flv 视频功能。首先浏览器直接支持 flv 和 mp4 格式。只需要在对应的 WEB 服务上完成配置即可。 注意&#xff0c;我的需求是通过浏览器直接播放 MP4&#xff0c;而不是服务器提供 RTMP 功能&#xff0c;使用 RTMP 又是另外一种…

浏览器兼容video视频播放的多种方法

前言&#xff1a; 在 HTML 中播放视频并不容易&#xff01;因为直到现在&#xff0c;仍然不存在一项旨在网页上显示视频的标准。今天&#xff0c;大多数视频是通过插件&#xff08;比如 Flash&#xff09;来显示的。然而&#xff0c;并非所有浏览器都拥有同样的插件。 比如win…

关于浏览器播放视频的些许理解

浏览器地址栏输入服务器端视频的url即可播放。刚开始觉得还有点神奇&#xff0c;追踪network请求&#xff0c;发现视频还没下载完就可以播放&#xff0c;还可以拖动进度条到指定时间。分析了一下网络请求和视频格式&#xff0c;得出些许领悟。 1.服务器端支持文件的分块传输。即…

浏览器中如何让视频倍速播放

浏览器中视频免费倍速播放 文章目录 浏览器中视频免费倍速播放1.打开Edge的扩展页面2.安装global speed 3.安装tampermonkey beta4.打开tampermonkey5.安装某盘视频播放器脚本6.打开播放链接 此篇教程只针对于某盘网页版&#xff0c;浏览器为Edge 1.打开Edge的扩展页面 2.安装g…

rtsp流浏览器播放方案

rtsp流在主流浏览器并不支持直接播放。比如大华的视频流&#xff1a;rtsp://admin:123456 192.168.10.129/cam/realmonitor?channel1&subtype0&#xff0c;用vlc可以直接播放。但在浏览器会报ERR_UNKNOWN_URL_SCHEME。那如何在浏览器中播放呢。 以下列出几种方案。 1、安…

浏览器播放rtsp视频流解决方案

解决获取到海康摄像头的rtsp视频流&#xff0c;在浏览器播放问题。采用ffmpegnginxvideo.js解决方案&#xff08;Windows环境&#xff09; 资源下载 ffmpeg百度云资源&#xff1a;链接&#xff1a;https://pan.baidu.com/s/15pq8ErLZg9UcOgjqTkJZtw 提取码&#xff1a;8kyg…

IAR基础教程之函数跳转

IAR基础教程之函数跳转 一、编译 二、编译过程 三、等待内部链接 在编译完成后&#xff0c;等待绿条读满。 注意&#xff1a; 如果绿条没有完成&#xff0c;部分函数可能无法跳转。 如果工程编译出错&#xff0c;则无法完成如上工作。 四、函数跳转 右键单击 点击“Defini…

IAR安装使用教程

仅仅用于学习交流&#xff0c;非用于商业&#xff0c;如有异议&#xff0c;请联系我。 IAR 和谐 和谐工具&#xff1a;IARkg_Unis.exe ---------1.双击打开 IARkg_Unis.exe 文件。点击”Generate”生成序列号&#xff0c;每个电脑生成的不同&#xff0c;将序列号复制保存下来以…

IAR 安装教程

学校的物联网技术实验需要IAR for 51工具&#xff0c;起初一直找不到下载窗口在哪&#xff0c;最后终于找到并下载安装成功&#xff0c;就分享一下 1.官网下载安装包 https://www.iar.com/ 寻找对应设备版本&#xff1a; 不清楚的话可以在下面寻找设备进行查询&#xff0c;像…

IAR教程之IAR安装

IAR安装 1.下载 1.1打开官网 1.2找到要下载的版本 1.3下载 同学们除了可以下载最新版本尝鲜之外&#xff0c;还可以下载之前的版本。低版本IAR打开高版本IAR工程&#xff0c;工程配置会错乱&#xff0c;导致编译报错问题&#xff0c;所以一定要使用比推荐版本高的IAR 单片机I…

Iar新建工程配置使用教程

Iar新建工程配置使用教程 wangxl20180809 新建工程 打开demo目录&#xff0c;重新复制led目录并改成自己的工程名&#xff0c;如:demoled;&#xff08;本模板适合stm32f10X的芯片使用) 运行iar软件&#xff0c;进入demoled\Project目录选project.eww进行打开; 工程配置 修改…

IAR for STM8安装教程

先附上下载链接和提取码哈&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1x5n_nYP2RcN2N_G9p4qz2Q 提取码&#xff1a;h135 1、软件安装 解压完后点击安装包下的&#xff1a;EWSTM8-3104-Autorun.exe文件进行安装 在这我们选择第一个选项&#xff0c;记住有些安装…

IAR for 8051安装教程

安装步骤&#xff1a; 安装前先关闭杀毒软件和360卫士&#xff0c;注意安装路径不能有中文&#xff0c;安装包路径也不要有中文。 安装前请断网。 试装系统&#xff1a;win10 64bit 1.解压安装包。 2.选择你需要安装的IAR for 8051的版本&#xff0c;一般选择安装最新的版…

IAR for STM8的基本使用教程

很多第一次接触硬件的小伙伴们对于如何利用IAR编写程序并烧录到板子上感觉很困扰&#xff0c;今天我们就从IAR的基本使用来讲起&#xff0c;希望能给大家带来一定的帮助。 1. 创建新的工作环境&#xff1a; 2. 在工作环境下创建自己的工程&#xff1a; 如果有已存在的工程&…

Iar工程调试使用教程

Iar工程调试使用教程 wangxl20180809 打开工程 运行iar软件&#xff0c;进入demoled\Project目录选project.eww进行打开; 二、调试 1、设置断点 在代码左边点击要设置断点的语句&#xff0c;或点击要设置断点的语句&#xff0c;按鼠标右键&#xff0c;选择Toggle Breakpoi…