不依赖flash,rtsp流通过ffmpeg+nginx-http-flv转成rtmp以及http-flv流,并通过flv.js在页面播放(附带所用的工具下载)

本文档介绍了如何将大华摄像头的rtsp视频流通过FFmpeg转换为rtmp和http-flv流,以适应现代浏览器的播放需求。通过配置nginx和flv.js,实现了在网页上流畅播放低延迟的视频流。同时,也提供了VLC播放器的播放示例。
摘要由CSDN通过智能技术生成

需求背景

公司用到大华摄像头,大华提供了rtsp的视频流,目前浏览器已都不支持flash,所以转成rtmp流无法播放;转成m3u8格式虽然可以直接播放,但是延迟太高;最终决定将rtsp流通过ffmpeg+nginx-http-flv转成rtmp以及http-flv流,并通过flv.js在页面播放。

开发工具

配置nginx.conf

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#error_log  logs/error.log  debug;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

# 添加RTMP服务
rtmp {
    server {
        listen 1936; # 监听端口

        chunk_size 4000;
        application live {
            live on;
			gop_cache on;
        }
    }
}

# HTTP服务
http {
    server {
        listen       8085;
        server_name	 localhost;
		
		location /live {
			flv_live on;
            chunked_transfer_encoding  on; #open 'Transfer-Encoding: chunked' response
			add_header 'Access-Control-Allow-Credentials' 'true'; #add additional HTTP header
			add_header 'Access-Control-Allow-Origin' '*'; #add additional HTTP header
			add_header Access-Control-Allow-Headers X-Requested-With;
			add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
			add_header 'Cache-Control' 'no-cache';
        }
	}
}

ffmpeg命令

(实时流):ffmpeg -i “rtsp://172.18.10.200:9090/dss/monitor/param?cameraid=1000298%240&substream=2” -vcodec copy -acodec copy -f flv “rtmp://127.0.0.1:1936/live/1000298”
在这里插入图片描述

rtmp播放地址:rtmp://127.0.0.1:1936/live/1000298
http-flv播放地址:http://127.0.0.1:8085/live?port=1936&app=live&stream=1000298

注意 :如果使用flv.js播放流,那么请保证发布的流被正确编码,因为flv.js只支持H.264编码的视频和AAC/MP3编码的音频

前端播放flv.js

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		
		<script src="https://cdn.bootcss.com/flv.js/1.4.0/flv.min.js"></script>
		<video id="videoElement" style="width: 80%;" controls="controls"></video>
		<script>
		    if (flvjs.isSupported()) {
		        var videoElement = document.getElementById('videoElement');
		        var flvPlayer = flvjs.createPlayer({
		            type: 'flv',
					url:'http://127.0.0.1:8085/live?port=1936&app=live&stream=1000298'
		        });
		        flvPlayer.attachMediaElement(videoElement);
		        flvPlayer.load();
		        flvPlayer.play();
		    }
		</script>
	</body>
</html>

flv.js播放视频

在这里插入图片描述

VLC播放视频

在这里插入图片描述

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值