目录

2021-02-20-前端rtsp-与-rtmp-视频流的播放方法

【前端】rtsp 与 rtmp 视频流的播放方法

【前端】rtsp 与 rtmp 视频流的播放方法

前端如何在网页上播放 rtsp 视频流?

导读

RTSP(Real Time Streaming Protocal),RFC2326,实时流传输协议,是 TCP/IP 协议体系中的一个应用层协议。…

额,算了,不写这些了;想了解科普知识的,自己去网上查;而且这也不是我写博文的风格,咋们直接上干货!

写在前面

如何生成一个 rtsp 的视频流?如何播放 rtsp 视频流?

你可以在网上搜一下 rtsp 测试视频流 ,看有没有现成的 rtsp 视频流连接可用。(不过,搜出来的大部分都不理想,不可用。)

在网上下载一个 ,它可以播放 rtsp 视频流,也可以将视频文件转成 rtsp 视频流

视频文件转 rtsp 视频流,具体操作如下:

https://i-blog.csdnimg.cn/blog_migrate/680be570235c2f2e534fcff0685035a8.gif

这样就会得到一个 rtsp 的视频流,链接是: rtsp://127.0.0.1:8554/a

我们再开一个 vlc, 来播放它:

https://i-blog.csdnimg.cn/blog_migrate/e1894949438512f8926e71ef7b693990.gif

OK,现在,我们已经学会制作 rtsp 视频流,也能用 vlc 工具来播放 rtsp 视频流了,那么下一步,就是在网页上如何播放 rtsp 视频流

前端如何在网页上播放 rtsp 视频流

方法一 、浏览器安装插件

【这是一个不推荐的方案】

因为,IE浏览器需要安装插件,火狐需要安装插件,谷歌浏览器需要安装插件,所有的的浏览器都需要安装插件才能在浏览器上直接播放 rtsp 视频流;而且插件都不一样,而且插件只有很旧版本的谷歌、火狐浏览器才可以支持使用;较新一点的浏览器都不支持这种方法了。

举个例子、谷歌浏览器需要安装 vlc 插件,依靠这个插件才能让 RTSP 协议在网页上能播放,但是目前高版本的 Chrome 浏览器不支持 NPAPI 插件,也就是说高版本的 Chrome 浏览器还是不能播放(46以上的版本都不行)。

所以、这种方案极其不推荐,建议你也别去试了!

方法二、转 rtmp

rtsprtmp ;这种方案,后端将 rtsp 视频流转换成 rtmp 视频流。

RTMPMacromedia 开发的一套视频直播协议,属于 Adobe 。想要在浏览器中实现 rtmp 推流,就必须借助 flash 的帮助。而且 HTML5 规范里面并没有针对 RTMP 的实现。毕竟这个协议标准是 Adobe 公司指定的。

但是现在是 2021 年了,谷歌浏览器不再支持 Flash 了,Flash 也不再更新,建议用户卸载了;所以浏览器直播播放 rtmp 的方式也不推荐。

方法三、转码推流

抛开上面两种思路以后,借助后端转码推流将是必要的操作

常见的包括但不限于以下几种:

  • 转 flv
  • 转 websocket
  • 转 http-flv
  • 转 m3u8
  • 转 hls

1、 ;这个很详细了,然后关于 ffmpeg 的安装与使用: ;ffmpeg 安装包我已经下载好并上传了,自取 =>

2、 ;

这里其实有一个思考就是是:【jsmpeg提供了一种播放ws协议视频流的直接方案】

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.jsmpeg, #video-canvas {
			border: 2px solid green;
			width: 300px;
			height: 300px;
		}
	</style>
</head>
<body>
	<script src="https://cdn.bootcdn.net/ajax/libs/jsmpeg/0.2/jsmpg.min.js"></script>
	<div class="jsmpeg" data-url="ws://127.0.0.1:3000"></div>
	<canvas id="video-canvas"></canvas>
	<script>
		var canvas = document.getElementById('video-canvas')
		var url = 'ws://127.0.0.1:3000'
		var player = new JSMpeg.Player(url, { canvas: canvas })
		player.play()
	</script>
</body>
</html>

3、

hls 流出来,缺点是 hls 流延迟更大。

4、将 RTSP/ RTMP 视频流转流,然后分发到 RTMP 服务器,然后服务器转 http-flv 出来,浏览器直接播放 http-flv 流;

方法四、使用rtsp2web

是一个提供在web页面直接播放 rtsp 视频流的包。使用起来简单快捷高效。

参考资料


(正文完)

前端学习交流群,想进来面基的,可以加群: , ;

写在最后:

约定优于配置 —— 软件开发的简约原则


(完)

我的:

个人网站:

Github:

新浪微博:

微信: miracle421354532

更多学习资源请关注我的新浪微博…好吗

68747470733a2f2f62:6c6f672e6373646e2e6e65742f6373646e5f7975646f6e672f:61727469636c652f64657461696c732f313131343238393730