热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在原生开发中控制HTML5视频

文章目录前言一、video标记对的属性二、video标记对的方法三、video标记对的事件四、PC端video标记对的问题1、视频如何自动播放2、视频的全屏播放3、视频全屏后导致的

文章目录



  • 前言

  • 一、video标记对的属性

  • 二、video标记对的方法

  • 三、video标记对的事件

  • 四、PC端video标记对的问题



    • 1、视频如何自动播放

    • 2、视频的全屏播放

    • 3、视频全屏后导致的垂直滚动条问题



  • 五、移动端video标记对的问题



    • 1、【IOS】iPhone系列手机中视频的内联播放问题

    • 2、【Android】多个视频同时播放问题

    • 3、在移动端自定义视频的控制按钮

    • 4、补充:移动端如何判断用户设备是IOS设备还是Android设备

    • 5、补充:【IOS】为适配iPhoneX设备制作两套页面



  • 总结




前言

有人可能会问,在如今各种前端框架和开发工具横行的年代,还用得上原生开发吗?作为一名从业18年的前端讲师,我要告诉大家学习原生开发的优点:



  1. 原生开发有助于同学们从原理上认识前端知识,并在本质上学会它。

  2. 原生开发有助于锻炼同学们的编程水平,提高大家对前端知识的理解。

  3. 正所谓万变不离其宗,做过项目开发的人们都知道,无论用什么框架,也是要用到扎实的Javascript功底的。

  4. 以小程序开发为例,如果用户要在小程序中添加一个非常长的页面,有的时候还是需要使用来实现的,这就可能会涉及到原生页面的制作。

今天我就为大家讲一讲在原生开发过程中,标记对遇到的一些问题以及这些问题的解决方案。




一、video标记对的属性

下表中列出了video标记对在开发过程中常用的原生属性。




























































































属性含义JS取值
src设置视频存放的路径及文件名。视频文件的URL地址
controls设置是否显示视频的控制面板。true、false
autoplay设置是否自动播放。true、false
loop设置是否循环播放。true、false
muted设置是否默认静音播放。true、false
volume获取/设置视频的音量大小。0-1
paused获取视频是否处于暂停状态。true、false
ended获取视频是否处于播放结束状态。true、false
duration获取视频的总播放时长。以秒为单位的时间
currentTime获取/设置视频当前播放的时长。以秒为单位的时间
playbackRate获取/设置视频的播放速度。1-正常倍速 2-两倍倍速 0.5-半倍倍速
poster设置视频播放前的封面图地址。封面图的URL地址
width设置视频在页面中显示的宽度范围。数值
height设置视频在页面中显示的高度范围。数值
videoWidth返回视频的原始宽度。数值
videoHeight返回视频的原始高度。数值

二、video标记对的方法

下表中列出了video标记对在开发过程中常用的原生方法。



















方法含义
play()控制视频开始播放。
pause()控制视频暂停播放。

三、video标记对的事件

下表中列出了video标记对在开发过程中常用的原生事件以及事件的触发机制。











































事件触发机制
play当视频开始播放时触发该事件。
pause当视频暂停播放时触发该事件。
ended当视频播放结束时触发该事件。
volumechange当视频音量发生变化时触发该事件。
ratechange当视频播放速度发生变化时触发该事件。
timeupdate当视频播放时间发生变化时触发该事件。
seeking当改变视频播放进度时触发该事件。
seeked当改变视频播放进度结束时触发该事件。

四、PC端video标记对的问题

1、视频如何自动播放

当前的浏览器都已经将视频的自动播放功能去掉了,也就是说在标记对上使用autoplay属性也无法实现视频的自动播放功能。
但是如果为标记对添加上autoplay属性的同时设置其静音播放是可以实现的。

<video src=“video/01.mp4” autoplay muted loop>video>

2、视频的全屏播放

有的视频是要在页面中实现自动全屏播放的,这类视频往往在页面一进入时就能够占据整个屏幕。目的是显示酷炫的视频效果,而不是展示声音,因此可以静音自动播放。

HTML代码如下所示:

<video src=“video/01.mp4” class=“bgVideo” autoplay muted loop>video>

CSS代码如下所示:

.bgVideo{
width:100%;height: 100%;
min-height: 1080px;
object-fit: cover;
}

3、视频全屏后导致的垂直滚动条问题

有的视频由于高度过大,在全屏播放后会在页面中产生垂直滚动条。如果不想让页面产生垂直滚动条,即在一屏中显示所有内容包括视频,则可以按照如下的CSS代码进行设置。

.bgVideo{
position:fixed;
z-index:-1000;
}

五、移动端video标记对的问题

1、【IOS】iPhone系列手机中视频的内联播放问题

使用IOS系统的设备,视频在播放时会自动“竖屏全屏”,也就是说在这类设备中单击视频播放按钮,视频不会在页面原有的位置中“内联播放”,而是会出现类似于全屏的模式。即页面展示为黑色的背景,但是视频在手机竖屏的情况下播放。

这个问题可以通过在标记对中添加属性的方式来解决。



  • IOS10及其以上版本的操作系统可以支持playsinline属性。

  • IOS10以下版本的操作系统只能使用-webkit-playsinline属性。

所以,HTML代码如下所示:

<video playsinline webkit-playsinline>video>

2、【Android】多个视频同时播放问题

一个页面下若有多个视频,这样的情况在Andro系统中可能会出现多个视屏同时播放的现象。
该问题的解决原理:在一个视频的play事件中,将其他所有的视频都暂停掉。

jQuery代码如下所示:

$("video").on("play",function(){
var reg=/android/i;
if(reg.test(navigator.userAgent)){
var currentVideo=$(this).get(0);
for(var i=0;i<$("video").length;i++){
if($("video").get(i)!==currentVideo){
$("video").get(i).pause();
}
}
}
})

注意:在视频的play事件中不要再调用play()方法,以免产生堆栈溢出。


3、在移动端自定义视频的控制按钮

对于不显示系统原生控制面板的视频,使用自己制作的元素来控制视频的播放与暂停。

jQuery代码如下所示:

$(".control").on("touchstart",function(){
var node=$(this).next().get(0);
if(node.paused){
node.play();
$(this).find("img").css("display","none");
}else{
node.pause();
$(this).find("img").css("display","inline");
}
}).on("touchend",function(){
var node=$(this).next().get(0);
node.muted=false;
})

注意:此时视频在HTML文档中必须设置为静音状态。


4、补充:移动端如何判断用户设备是IOS设备还是Android设备

使用navigator.userAgent属性来判断返回值当中是否带有特定的字符串。

(1)判定Android设备:

var reg=/android/gi;
if(reg.test(navigator.userAgent)){
console.log(“这是Android设备”);
}

(2)判断IOS设备:

var reg=/(iphone)|(ipad)|(ipod)/gi;
if(reg.test(navigator.userAgent)){
console.log(“这是ISO设备”);
}

5、补充:【IOS】为适配iPhoneX设备制作两套页面

由于iPhoneX及其以上的设备高度远远大于iPhoneX以下的产品(高度大于812px),因此对于具有全屏背景的页面需要为大高度的设备再做一套页面,或者判断设备加载不同的背景图片。

那么如何判断IOS设备是否是iPhoneX以上的设备呢?代码如下所示。

if(screen.height>=812){
//iPhoneX系列的大高度设备
location.href=“indexX.html”;
}



总结

相对来说,视频效果再原生开发过程中的情况还是比较复杂的,同学们在接触这类项目时,应该多积累具体问题的解决方案,这样才能触类旁通,让自己变成项目经验丰富的程序员。

本文地址:https://blog.csdn.net/web_front_hai/article/details/110540795



推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • springboot项目引入jquery浏览器报404错误的解决办法
    本文介绍了在springboot项目中引入jquery时,可能会出现浏览器报404错误的问题,并提供了解决办法。问题可能是由于将jquery.js文件复制粘贴到错误的目录导致的,解决办法是将文件复制粘贴到正确的目录下。如果问题仍然存在,可能是其他原因导致的。 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
author-avatar
琪琪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有