H5播放Rtmp之videojs播放

一、简介

我们看到了HLS播放视频实时性非常差,好的在6-7s,差点的就要10-12s了,也就是人走了,估计视频上还能看到,这对观感效果造成了很大的影响!但是好处就是它是基于http协议文件下载的,所以不需要任何插件,到处播放,处处兼容,所以rtmp和hls在web端的特点如下:

  • HLS
    (1) 使用http协议,兼容所有浏览器。
    (2) 延时非常大,不太适合实时视频源,适合文件点播或历史录像直播。
  • RTMP
    (1) 使用flash插件播放,不兼容所有浏览器(特别2020年12月后chrome带头不再支持flash)
    (2) 浏览器播放需要对浏览器安全进行设置,此外点播可能还会弹出确定提示,交互体验较差
    (3) 更贴近传统监控的实时协议,实时性非常好,基本与实时视频点播一致

考虑到实时性,我们可能还会选择使用rtmp协议点播我们的视频,所以就实时性而言还是很有必要考虑rtmp协议的使用,接下来,我要跟大家一起分享的就是在web端使用rtmp协议查看视频。

二、VideoJS播放rtmp

前端播放代码如下所示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>video.js播放rtmp流</title>
		<!--引入播放器样式-->
		<link href="http://vjs.zencdn.net/5.19/video-js.min.css" rel="stylesheet">
		<!--引入播放器js-->
		<script src="http://vjs.zencdn.net/5.19/video.min.js"></script>
		<script src="https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js"></script>
	</head>
	<body>
		<!--vjs-big-play-centered 播放按钮居中-->
		<!--poster默认的显示界面,就是还没点播放,给你显示的界面-->
		<!--controls 规定浏览器应该为视频提供播放控件-->
		<!--preload="auto" 是否提前加载-->
		<!--autoplay 自动播放-->
		<!--loop=true 自动循环-->
		<!--data-setup='{"example_option":true}' 可以把一些属性写到这个里面来,如data-setup={"autoplay":true}-->
		<video id="my-player"
			class="video-js vjs-default-skin vjs-big-play-centered" controls
			preload="auto" autoplay="autoplay"
			poster="images/logo.png" width="500" height="400"
			data-setup='{}'>
			<!--src: 规定媒体文件的 URL  type:规定媒体资源的类型-->
			<source src='rtmp://192.168.12.187:1935/live/1' type='rtmp/flv' />
		</video>
		<script type="text/javascript">
		    // 设置flash路径,用于在videojs发现浏览器不支持HTML5播放器的时候自动唤起flash播放器
		    videojs.options.flash.swf = 'https://cdn.bootcss.com/videojs-swf/5.4.1/video-js.swf';
		  	//my-player为页面video元素的id
		    var player = videojs('my-player'); 
		  	//播放
		    player.play(); 
			//    1. 播放   player.play()
			//    2. 停止   player.pause()
			//    3. 暂停   player.pause()
		</script>
	</body>
</html>

我使用的是360浏览器,测试没有提示flash插件安全限制,直接播放出来。延迟时间大概在1s以内。
在这里插入图片描述
在这里插入图片描述
那么如何解决?我们需要配置chrome允许flash运行,在chrome浏览器中输入设置地址:

chrome://settings/content/flash

在这里插入图片描述
浏览器开放flash之后并不是所有浏览器就可以播放了,如果是http的可能会提示不安全,需要单独为该网站开放flash,如下所示,点击chrome浏览器“不安全”提示按钮,在菜单中打开flash
在这里插入图片描述
再次刷新该网站就可以看到rtmp直播视频了
在这里插入图片描述
源码获取、合作、技术交流请获取如下联系方式:
QQ交流群:961179337
在这里插入图片描述

微信账号:lixiang6153
公众号:IT技术快餐
电子邮箱:lixx2048@163.com

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答1: Vue是一种流行的前端框架,它提供了强大的工具和组件,可以帮助我们构建现代化的Web应用程序。在Vue中播放RTMP流而不使用Flash,我们可以使用一些现代的技术和组件。 首先,我们可以使用video.js这样的HTML5播放器库来播放RTMP流。video.js是一个功能强大且易于使用的库,它支持HTML5视频播放,并且可以扩展以支持不同的流媒体协议,包括RTMP。我们可以使用video.js的vue插件vue-video-player来在Vue应用中轻松地集成该播放器。 其次,我们可以使用hls.js库来播放RTMP流。hls.js是一个JavaScript库,它使用HTTP Live Streaming(HLS)协议来播放视频流。我们可以使用vue-hls-player这样的vue插件来在Vue中使用hls.js库。这个插件提供了一个简单的组件,可以方便地集成HLS播放器,并播放RTMP流。 最后,我们还可以使用DPlayer这样的开源视频播放器库来播放RTMP流。DPlayer是基于HTML5的视频播放器,它使用了开源的flv.js库来支持FLV格式的视频流。我们可以使用vue-dplayer这样的vue插件来在Vue应用中使用DPlayer来播放RTMP流。 总之,我们可以使用video.js、hls.js或DPlayer这些HTML5播放器库来在Vue应用中播放RTMP流而不使用Flash。这些库都提供了vue插件,可以轻松地与Vue应用集成。 ### 回答2: vue播放rtmp不使用flash可以采用video.js配合Hls.js插件实现。 首先在vue项目中安装video.js和hls.js插件: ```bash npm install video.js hls.js ``` 然后在组件中引入video.js的css和js文件,并创建一个video标签: ```html <template> <div> <video id="my-video" class="video-js"></video> </div> </template> <script> import videojs from 'video.js'; import 'video.js/dist/video-js.css'; import Hls from 'hls.js'; export default { mounted() { this.initPlayer(); }, methods: { initPlayer() { const options = { autoplay: true, controls: true, sources: [{ src: 'rtmp://your-rtmp-stream-url.com/live/stream-name', type: 'rtmp/mp4', }], }; const player = videojs('my-video', options); if (Hls.isSupported()) { const hls = new Hls(); hls.loadSource('http://your-hls-stream-url.com/live/stream-name.m3u8'); hls.attachMedia(player); hls.on(Hls.Events.MANIFEST_PARSED, () => { player.play(); }); } else if (player.canPlayType('rtmp/mp4')) { player.src(options.sources[0].src); player.play(); } } } } </script> ``` 以上代码在组件加载时初始化了video.js播放器,并通过options设置播放器的参数,其中source中的src填入你的rtmp流链接。然后通过Hls.js加载hls流,如果浏览器不支持hls,则fallback到rtmp播放。 最后通过mounte钩子函数调用initPlayer函数,实现播放rtmp流不使用flash的功能。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝壳里的沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值