Django播放m3u8格式网络视频(videojs)

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>videoJs</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>
        <section id="videoPlayer">
            <video id="my-video"  style="clear:both;display:block;margin:auto;width:100%;" width="1280" height="720" class="video-js vjs-default-skin vjs-big-play-centered" poster="">
                <source src="https://2.mhbobo.com/20190817/Af9HE9N9/index.m3u8" type="application/x-mpegURL" id="target"> 
 
            </video>
        </section>
		  <script src="https://vjs.zencdn.net/7.6.6/video.js"></script>
        <script type="text/javascript">
            var player = videojs('my-video', { "poster": "", "controls": "true" }, function() {
                this.on('play', function() {
                    console.log('正在播放');
                });

                this.on('pause', function() {
                    console.log("暂停中")
                });
         
                this.on('ended', function() {
                    console.log('结束');
                })
 
            });
        </script>
    </body>
</html>
参考资料

video.html

<!DOCTYPE html><html lang="ja">
<head>
<title>{{context.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>

<h3 align="center">欢迎访问樱花视频网站!</h3>
<style type="text/css">
<!--
.page{
	text-align:center;
	margin-top: 50px;
}
.page a{
	text-decoration:none;
	border:1px solid black;
	padding: 5px 7px;
	color: blue;
}
p{
	font-size:8px;
	text-align:left;
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-line-clamp:4; 
	-webkit-box-orient: vertical;
	}
-->
</style>
</head>
<body>
<div class="page">
<span><a href="/video/{{context.current_page | add:"-1"}}">上一页</a></span>
{% if context.page_list %}
	{% for pg in context.page_list %}
		<a href="/video/{{pg}}"> {{pg}} </a>
	{% endfor %}
{% endif %}
<span><a href="/video/{{context.current_page | add:"1"}}">下一页</a></span>
</div>
<br>
<div>
	{% if context.data %}
		{% for li in context.data %}
			<div style="float:left;width:33.33%;">
						<div>
							<section id="videoPlayer">
								<video id="my-video-{{li.id}}" width="400" height="300" class="video-js vjs-default-skin vjs-big-play-centered" controls preload="auto" poster=""  data-setup="{}">
									<source src="{{li.address}}" type="application/x-mpegURL" id="target"> 
								</video>
							</section>	
							<script src="https://vjs.zencdn.net/7.6.6/video.js"></script>
								<script type="text/javascript">
								var player = videojs('my-video-{{li.id}}', { "poster": "", "controls": "false" , }, function() {
								this.on('play', function() {
										
									window.document.title="{{li.title}}";
									console.log(window.document.title);
									console.log('正在播放');
										});
									//暂停--播放完毕后也会暂停
									this.on('pause', function() {
									console.log("暂停中")
											});
											// 结束
									this.on('ended', function() {
									console.log('结束');
											})
							 
										});

							</script>					
						</div>

					<div >
				
						<p>
							名前:{{li.title}}
						<br> 
							メール:{{li.address}}
						<br> 
							時間:{{context.time | date:"H:i:s"}}
						<br> 
						    id:{{li.id}}
						<br> 
						</p>
				    </div>	

			</div>	
	{% empty %}
		<li>no!</li>
		{% endfor %}
	{% endif %}
</div>

<div>
{%load mydigit%}
<h5 align="right">当前页数:{{context.current_page}}</h5>
<h5 align="right">总页数:{{context.pages }}</h5>
<h5 align="right">总数量:{{context.num | mydigit:4}}</h5>
<h5 align="right"> 时间:{{context.time | date:"Y-m-d H:i:s" }}</h5> 
</div>

</body>
</html>

views.py

def video_pages(request,page=1):
    page=int(page)
    set_video_num=15
    template=loader.get_template("video.html")
    all_list=Video.objects.all()#读取数据库信息
    
    if (page<=0):
        url="http://127.0.0.1:8000/video/"
        return HttpResponseRedirect(url)

    if(len(all_list)<(page-1)*set_video_num+1):
        url="http://127.0.0.1:8000/video/"
        return HttpResponseRedirect(url)

    data_list=[]
    for i in range((page-1)*set_video_num,page*set_video_num):
        data_list.append(all_list[i])

    if(len(data_list)%set_video_num==0):
        pages=len(all_list)/set_video_num
    else:
        pages=len(all_list)/set_video_num + 1

    context={"title":"Player!","time":datetime.datetime.now(),"data":data_list,"num":len(all_list),"pages":pages,"current_page":page,"page_list":list(range(1,pages+1))}
    request_context = RequestContext(request, context)
    request_context.push(locals())
    html=template.render(context=locals(), request=request)
    return HttpResponse(html)

网站预览示例
在这里插入图片描述
数据库信息预览
在这里插入图片描述
访问网址:127.0.0.1:8000/video/1

urlpatterns = [
    url(r"^video/(?P<page>\d+)/$", views.video_pages),
    ]

问题:

var player = videojs('my-video’, { "poster": "", "controls": "false" , }, function())
videojs不能被多次实例化,视频显示失败(添加模板变量后缀)
var player = videojs('my-video-{{li.id}}', { "poster": "", "controls": "false" , }, function())
仍旧会有问题(警告),但功能正常

在这里插入图片描述
完整项目

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

佐倉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值