通过Nodejs搭建流媒体服务器--鉴权验证

通过Nodejs搭建流媒体服务器--鉴权验证


在上一节 搭建流媒体服务器中已经讲述了简单实现推流拉流的过程。由于如果我们直接设置流名称不添加限制可能会导致任何人都可以访问我们的直播平台。之前我们的地址可能是如下:

rtmp://localhost/live/STREAM_NAME
http://localhost:8000/live/STREAM_NAME.flv

因此我们需要将地址修改成如下:

rtmp://hostname:port/appname/stream?sign=expires-HashValue
http://hostname:port/appname/stream.flv?sign=expires-HashValue
ws://hostname:port/appname/stream.flv?sign=expires-HashValue

换言之,我们需要将原始推流地址进行加密设置。需要设置如下两部:

  • 设置服务器允许加密验证
  • 更新加密验证地址
  • 拉流端更新加密地址

服务器允许加密验证

const config = {
	rtmp: {
		port: 1935,
		chunk_size: 60000,
		gop_cache: true,
		ping: 60,
		ping_timeout: 30
	},
	http: {
		port: 8000,
		allow_origin: '*'
	},
	auth: {
		play: true, //表示拉流的时候是开启鉴权验证
		publish: true, //表示推流的时候开启鉴权验证
		secret: 'nodemedia2020privatekey'
	}
}

更新加密验证地址

url地址加密验证需要通过md5加密

var streamName='haizhengzheng';
var expireData=parseInt((Date.now()+1000000)/1000)
var HashValue=md5(`/live/${streamName}-${expireData}-${appconfig.secret}`)
var sign=`${expireData}-${HashValue}`;
var rtmpurl =`rtmp://192.168.0.105/live/${streamName}?sign=${sign}`

更新拉流地址

  • 使用http-flv方式拉流
<!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://192.168.0.105:8000/live/haizhengzheng.flv?sign=1580268103-5913170300c794f918bb4e7341a80b8e'
		        });
		        flvPlayer.attachMediaElement(videoElement);
		        flvPlayer.load();
		        flvPlayer.play();
		    }
		</script>
	</body>
</html>
  • 使用rtmp方式拉流
    特别注意!!!!是用这种方式拉流需要在服务器端发布才能访问
<html>
<head>
<title>RTMP 视频直播</title>
<meta charset="utf-8">
<link href="http://vjs.zencdn.net/5.5.3/video-js.css" rel="stylesheet">
<script src="http://vjs.zencdn.net/ie8/1.1.1/videojs-ie8.min.js"></script>
</head>
<body>
<h1>直播间</h1>
<video id="my-video" class="video-js" controls preload="auto" width="640" height="300"
poster="http://ppt.downhot.com/d/file/p/2014/08/12/9d92575b4962a981bd9af247ef142449
.jpg" data-setup="{}">
<source src="rtmp://192.168.0.105:1935/live/haizhengzheng?sign=1580270005-98e02f954775e63c9fee6135d38c0710" type="rtmp/flv">
<p class="vjs-no-js">播放视频需要启用JavaScript,推荐使用支持HTML5 的浏览器访问。
To view this video please enable JavaScript, and consider upgrading to a web browser
that
<a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5
video</a>
</p>
</video>
<script src="http://vjs.zencdn.net/5.5.3/video.js"></script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值