H5播放HLS之videojs播放视频

一、简介

如果要让网页支持在所有浏览器上播放,就需要使用第三方的播放器。VideoJs是一个较好的播放器库,完全免费,不像JWPlayer一样需要付费才能使用一些高级功能。

videojs播放库是比较有名的一个播放库,它不仅支持hls也支持rtmp,不过如果是播放rtmp它最终也是通过flash插件完成的,我们暂时只看hls。

二、实现

如果使用videojs播放hls前端代码实现如下:

<!DOCTYPE html>
<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <title>Title</title>
	    <link href="https://vjs.zencdn.net/7.6.6/video-js.css" rel="stylesheet" />
	    <!-- If you'd like to support IE8 (for Video.js versions prior to v7) -->
	    <script src="https://vjs.zencdn.net/ie8/1.1.2/videojs-ie8.min.js"></script>
	</head>
	<body>
		<video
		        id="my-video"
		        class="video-js  vjs-big-play-centered"
		        controls
		        preload="auto"
		        width="640"
		        height="264"
		        data-setup="{}">
		    <source src="http://192.168.12.187:8080/live/1.m3u8" type="application/x-mpegURL"/>
		    <p class="vjs-no-js">
		       	 请升级您的浏览器之后在看该视频!
		        <a href="https://videojs.com/html5-video-support/" target="_blank">支持H5视频标签</a>
		    </p>
		</video>
		<script src="https://vjs.zencdn.net/7.6.6/video.js"></script>
	</body>
</html>

经过测试videojs播放HLS延迟大概在8s左右,不过也是非常的流畅,如果要定制自己的播放器可以参考如下代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>videojs自定义播放器</title>
    <link href="./css/bootstrap.min.css" rel="stylesheet">
    <script type="text/javascript" src="./js/jquery.min.js"></script>
    <link href="./videojs/video-js.css" rel="stylesheet">
    <script src="./videojs/video.js"></script>
    <script src="./videojs/videojs-contrib-hls.min.js"></script>
</head>

<body>
    <center>
        <video id=example-video width=600 height=300 class="video-js vjs-default-skin" controls>

        </video>
        <div class="input-group" style="margin-top: 10px; width: 740px;">
            <input type="text" name="stream_address" id="stream_address" required autofocus
                placeholder="input HLS Stream Address 注意不要含有空格" class="form-control">
            <span class="input-group-btn input-btn">
                <button class="btn btn-default" id="form_button" type="button">提交</button>
            </span>
        </div>
    </center>
    <script type="text/javascript">
        var default_hls_address = 'http://192.168.12.187:8080/live/1.m3u8';
        var options = {
            width: 1280,
            height: 720,
            poster: "../image/video-background.jpg",
            autoplay: true,
            controls: true,
            loop: true,
            preload: 'auto',
            sourceOrder: true,
            sources: [{
                src: default_hls_address,
                type: 'application/x-mpegURL'
            }, {
                src: '//path/to/video.webm',
                type: 'video/webm'
            }],
            techOrder: ['html5', 'flash'],
            flash: {
                swf: 'videojs/video-js.swf'
            }
        }
        var player = videojs('example-video', options);
        player.addClass('vjs-matrix');
        player.on(['loadstart', 'play', 'playing', 'firstplay', 'pause', 'ended', 'adplay', 'adplaying', 'adfirstplay', 'adpause', 'adended', 'contentplay', 'contentplaying', 'contentfirstplay', 'contentpause', 'contentended', 'contentupdate'], function (e) {
            //        console.warn('VIDEOJS player event: ', e.type);
            if (e.type == "play") {
                console.log('开始播放');
            } else if (e.type == "playing") {
                console.log('正在播放...');
            } else if (e.type == "pause") {
                console.log('暂停视频播放');
            } else if (e.type == "firstplay") {
                console.log('firstplay播放');
            } else {
                console.log('1111111111111');
            }
        });
        $(function () {
            $("#form_button").click(function () {
                var msg = $("#msg");
                stream_address = $('input[name="stream_address"] ').val();
                console.log(stream_address);
                if (stream_address == "") {
                    $('#stream_address ').css("border", "1px #ff0000 solid");
                    msg.text("请输入媒体流地址");
                    msg.addClass("warning");
                    return false;
                } else {
                    $('#stream_address').css("border", "1px #ff00ff solid");
                    msg.text("error");
                    msg.removeClass("warning");
                }
                $('#stream_address_code ').html("\"" + stream_address + "\"");
                player.src({
                    src: stream_address,
                    type: "application/x-mpegURL"
                });
            });
        });
        console.log(stream_address);
    </script>
</body>
</html>

源码获取、合作、技术交流请获取如下联系方式:
QQ交流群:961179337
在这里插入图片描述

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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: H5播放HLS(Hypertext Live Streaming)是指使用HTML5技术在网页中播放HLS格式的视频流。HLS是一种基于HTTP协议的流媒体传输协议,它通过将视频流分割成小的TS文件,并使用M3U8文件作为索引,实现视频的分段加载和播放。 为了在网页中实现H5播放HLS,可以使用hls.js库(hls.min.js)。hls.js是一个开源的JavaScript库,它提供了一个HLS播放器,可以在支持HTML5的浏览器中播放HLS视频。 使用hls.js库,需要在网页中引入hls.min.js文件,并创建一个Hls对象。然后,根据视频地址创建一个video元素,并将其作为参数传递给Hls对象的attachMedia方法。接下来,可以监听Hls对象的一些事件(如Hls.Events.MANIFEST_PARSED),根据需要设置一些配置选项,如自动播放、循环播放等。最后,调用Hls对象的loadSource方法并传入视频地址,开始加载并播放HLS视频。 使用hls.js库,可以实现在网页中无插件地播放HLS视频,而无需依赖Flash等第三方插件。它还提供了一些功能,如自适应码率切换、缓冲控制、清晰度切换等,来提升用户体验。总的来说,hls.js库为开发者提供了一种简单、可靠的方式来实现H5播放HLS视频的功能。 ### 回答2: h5播放HLS(HTTP Live Streaming)是一种流媒体传输协议,可以在网络不稳定或带宽较低的情况下流畅播放视频。为了实现在H5页面上播放HLS格式的视频,我们可以使用hls.min.js库。 hls.min.js是一个开源的JavaScript库,它是HLS.js的压缩版本。HLS.js是一个在Web平台上实现HLS播放的JavaScript库,它使用Media Source Extension(MSE)技术来实现HLS的解析和播放。 在使用hls.min.js之前,我们需要先在HTML页面中引入该库的脚本。可以通过在<script>标签中增加src属性指向hls.min.js文件所在的URL来进行引入。例如: <script src="hls.min.js"></script> 接下来,我们需要创建一个HLS对象并将其绑定到video元素上。这可以通过以下代码来实现: var videoElement = document.getElementById('video'); var hls = new Hls(); hls.loadSource('video_url.m3u8'); hls.attachMedia(videoElement); 在上面的代码中,videoElement是我们在HTML中定义的video元素,'video_url.m3u8'是HLS视频流的URL。通过loadSource()方法来加载HLS视频流,并通过attachMedia()方法将HLS对象绑定到video元素上。 最后,我们需要监听HLS对象的一些事件来处理播放状态的变化。例如,我们可以监听HLS对象的'Hls.Events.MANIFEST_PARSED'事件来确保视频流已经解析完毕并可以开始播放hls.on(Hls.Events.MANIFEST_PARSED, function() { videoElement.play(); }); 通过以上步骤,我们就可以在H5页面上使用hls.min.js库来播放HLS格式的视频了。 ### 回答3: hls.min.js是一个用于播放HLS(HTTP Live Streaming)视频的JavaScript库。HLS是一种基于HTTP的流媒体传输协议,它将视频切分成小片段,并通过HTTP协议逐个下载和播放这些片段。 hls.min.js库可以实现在支持HTML5的浏览器中播放HLS视频流。它提供了一些API和事件监听器,用于控制和管理视频的播放。 首先,我们需要在HTML页面中引入hls.min.js库文件。然后,通过创建一个新的Hls对象来初始化播放器。使用Hls对象的loadSource方法可以加载一个HLS视频流的URL。一旦视频流加载完毕,可以通过调用Hls对象的attachMedia方法将视频流与HTML中的video元素关联起来。 hls.min.js库还提供了一些事件监听器,例如在视频播放开始或结束时触发的事件。我们可以通过添加这些事件监听器来执行自定义的操作,例如在视频播放结束后自动加载下一个视频片段。 此外,hls.min.js还支持视频流的动态切换。如果视频有多个分辨率或质量选项,可以通过调用Hls对象的startLoad或nextLevel方法来切换视频的质量。 总之,hls.min.js库是一个方便并且易于使用的工具,可以使开发者在HTML5中实现HLS视频的播放。它提供了一系列的API和事件监听器,用于控制和管理视频的播放过程,并且支持视频流的动态切换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

贝壳里的沙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值