srs+ffmpeg+flv.js查看实时监控

一、Linux中搭建srs服务器

1、在Linux中下载srs

git clone https://github.com/ossrs/srs
#下载很慢可以使用下面的地址
git clone https://gitee.com/winlinvip/srs.oschina

2、编译srs

#进入trunk目录
cd srs/trunk

#编译
./configure && make

3、创建自己的flv配置文件,可以从官方给的去复制修改

#将官方的配置文件复制为自己的
cp http.flv.live.config my.http.flv.live.config

vim my.http.flv.live.config

#文件内容:
listen              1935;
max_connections     1000;
daemon              off;
srs_log_tank        console;
http_server {
    enabled         on;
    listen          80;
    dir             ./objs/nginx/html;
}
vhost __defaultVhost__ {
    http_remux {
        enabled     on;
        mount       [vhost]/[app]/[stream].flv;
        hstrs       on;
    }

    dvr {
        enabled                 on;
        dvr_path                ./objs/nginx/html/[app]/[stream].flv;
        dvr_plan                session;
        dvr_duration            30;
        dvr_wait_keyframe       on;
        time_jitter             full;
    }
	
	#降低延迟
	gop_cache                   off;
    queue_length                10;
    min_latency                 on;
    mr {
        enabled                 off;
    }
    mw_latency                  100;
    tcp_nodelay                 on;
}

4、启动srs

#返回trunk目录
cd ../
./objs/srs -c conf/my.http.flv.live.conf
二、使用ffmpeg搭建本地推流环境

1、下载ffmpeg:官方地址
2、将bin目录加入到环境变量的系统变量[Path]中
3、cmd窗口输入ffmpeg,有以下内容表示搭建成功
在这里插入图片描述

三、页面显示摄像头的实时画面

1、使用ffmpeg向srs推流,这里使用的是海康的rtsp转rtmp和flv

ffmpeg -rtsp_transport tcp -i "rtsp://admin:12345@192.168.1.65:554/h264/ch1/main/av_stream" -vcodec copy -acodec copy -an -f flv "rtmp://192.168.1.152/live/video"

2、html页面,flv.js下载

<video id="video1" class="myVideo" controls autoplay autobuffer muted preload="auto" ></video>

<script type="text/javascript" src="./js/video/flv.js"></script>
<script>
	var videoElement = document.getElementById('video1');
	var flvPlayer = flvjs.createPlayer({
		type: 'flv',
		url: str
	},{
		enableWorker: false,
		enableStashBuffer: false,
		stashInitialSize: 1,
		lazyLoad: false,
		lazyLoadMaxDuration: 1,
		lazyLoadRecoverDuration: 1,
		deferLoadAfterSourceOpen: false,
		autoCleanupMaxBackwardDuration: 1,
		autoCleanupMinBackwardDuration: 1,
		statisticsInfoReportInterval: 1,
		fixAudioTimestampGap: false
	});
	flvPlayer.attachMediaElement(videoElement);
	flvPlayer.load();
	flvPlayer.play();
		
	#降低延迟	
	document.getElementById("video1").addEventListener('progress', function() {
        var range = 0;
        var bf = this.buffered;
        var time = this.currentTime;

        while(!(bf.start(range) <= time && time <= bf.end(range))) {
            range += 1;
        }
        this.currentTime = this.buffered.end(range) - 0.4;	//值越小延迟越小,但是经常会有一个转圈的动作
    });
</script>	
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过以下步骤来实现Java与RTSP、FFmpeg、HTML和Nginx的结合来实现视频实时播放的监控系统: 1. 首先,你需要使用Java来创建一个监控系统的后端服务。你可以使用Java的网络编程库来监听RTSP并将其解码。可以使用开源的库,例如JRTSP或者Xuggler来处理RTSP,并将其转换为可供播放的视频。 2. 接下来,你需要使用FFmpeg来处理视频FFmpeg是一个强大的多媒体处理工具,可以用于转码、解码、编码等操作。你可以使用FFmpeg来解码RTSP,并将其转换为HTML5支持的视频格式,例如HLS(HTTP Live Streaming)或者MPEG-DASH(Dynamic Adaptive Streaming over HTTP)。 3. 在前端方面,你可以使用HTML和JavaScript来创建一个简单的视频播放器。你可以使用HTML5的<video>标签来嵌入视频,并使用JavaScript来控制视频的播放、暂停等操作。你可以使用一些开源的视频播放器库,例如video.js或者plyr来简化开发过程。 4. 最后,你可以使用Nginx作为反向代理服务器来提供视频的分发和缓存功能。Nginx可以将视频从后端服务器转发给前端浏览器,并且可以缓存视频文件以提高性能和可靠性。你可以配置Nginx来支持HLS或者MPEG-DASH协议,并且可以使用Nginx的HTTP模块来进行性能优化和安全加固。 综上所述,通过将Java、RTSP、FFmpeg、HTML和Nginx结合起来,你可以实现一个监控视频的实时播放系统。这个系统可以从RTSP中提取视频数据,经过FFmpeg处理后,通过HTML和JavaScript在浏览器中进行播放,并且可以使用Nginx提供性能优化和缓存支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值