05. Web大前端时代之:HTML5+CSS3入门系列~H5 多媒体系

news2024/12/27 12:38:10

1.引入

概述

音频文件或视频文件都可以看做是一个容器文件(类似于压缩的zip)

编解码器就是读取特定的容器格式,对其中的音频与视频轨进行解码,然后实现播放

解码器

解码器(decoder),是一种输入模拟视频信号并将它转换为数字信号格式,以进一步压缩和传输的硬件/软件设备

视频格式

Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件

MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件

WebM = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件

支持状况

audio的canPlayType可以检测浏览器支持的文件格式

在线检测(右击查看源码)

http://dnt.dkill.net/DNT/HTML5/demo/check.html

2.video

逆天测试仅供参考

,火狐,Edge,IE :mp4格式的基本上都支持了,wmv格式的基本上都不支持,avi格式的火狐不支持

案例

1.简单案例:

<video src="data:images/big.mp4" controls loop>你的浏览器不支持</video>

<video src="data:images/big.mp4" poster="http://dnt.dkill.net/Images/banner.jpg" controls loop></video>

说明:

loop循环播放

controls显示工具栏

<video src="data:images/big.mp4" controls>你的浏览器不支持</video>

poster 视频预览图

<video src="data:images/big.mp4" poster="http://dnt.dkill.net/Images/banner.jpg" controls loop></video>

autoplay自动播放

<video src="data:images/big.mp4" controls autoplay loop>你的浏览器不支持</video>

preload是否在页面加载后载入视频如果设置了 autoplay 属性,则忽略该属性

属性值:

auto - 当页面加载后载入整个视频

meta - 当页面加载后只载入元数据 (有些是浏览器是metadata)

none - 当页面加载后不载入视频

<video src="data:images/big.mp4" controls preload="auto">你的浏览器不支持</video>

2.多源案例

浏览器自动选择第一个可识别的文件来播放

<video controls>

<source src="http://www.w3school.com.cn/i/movie.mp4" type="video/mp4" />

<source src="http://www.w3school.com.cn/i/movie.ogg" type="video/ogg"/>

</video>

3.小播放器

<video id="myvideo" src="../images/big.mp4" poster="http://dnt.dkill.net/Images/banner.jpg" controls loop>回家休息休息。。。</video>

<script type="text/javascript">

var musicObj = $("#myvideo");

//单击控制播放与否

musicObj.click(function () {

if (this.paused) {

this.play();

} else {

this.pause();

}

});

</script>

3.audio

学过video之后这个就小儿科了,简单介绍一下

基本用法

<audio src="http://dnt.dkill.net/DNT/music/棋子.mp3" controls></audio>

<audio controls>

<source src="http://www.dkill.net/DNT/music/棋子.ogg" type="audio/ogg" />

<source src="http://dnt.dkill.net/DNT/music/棋子.mp3" type="audio/mp3" />

</audio>

4. 扩展内容

大纲

在所有属性中,只有 videoWidth 和 videoHeight 属性是立即可用的。在视频的元数据已加载后,其他属性才可用。

浏览器测试

代码和测试结果看备注(基本上都是满足的)

属性

只读

ended

返回true代表播放结束

paused

ture代表暂停播放,false代表正在播放

seeking

返回用户是否正在音频/视频中进行查找

true代表查找

duration

获取视频总时间(单位秒)

currentSrc

返回媒体url

readyState

返回音频/视频当前的就绪状态

0 = HAVE_NOTHING - 没有关于音频/视频是否就绪的信息

1 = HAVE_METADATA - 关于音频/视频就绪的元数据

2 = HAVE_CURRENT_DATA - 关于当前播放位置的数

据是可用的,但没有足够的数据来播放下一帧/毫秒

3 = HAVE_FUTURE_DATA - 当前及至少下一帧的数据是可用的

4 = HAVE_ENOUGH_DATA - 可用数据足以开始播放

networkState

回音频/视频的当前网络状态

0 = NETWORK_EMPTY - 音频/视频尚未初始化

1 = NETWORK_IDLE - 音频/视频是活动的且已选取资源,但并未使用网络

2 = NETWORK_LOADING - 浏览器正在下载数据

3 = NETWORK_NO_SOURCE - 未找到音频/视频来源

回对象

error

this.error.code

1 = MEDIA_ERR_ABORTED - 取回过程被用户中止

2 = MEDIA_ERR_NETWORK - 当下载时发生错误

3 = MEDIA_ERR_DECODE - 当解码时发生错误

4 = MEDIA_ERR_SRC_NOT_SUPPORTED - 不支持音频/视频

console.log(this.error.code);

played

得视频中以秒计的首段已播放的范围(部分)

属性值

length - 获得音频/视频中已播范围的数量

start(index) - 获得某个已播范围的开始位置

end(index) - 获得某个已播范围的结束位置

获取当前播放时间:this.played.end(0)

seekable

示音频/视频中的可寻址部分

属性值

length - 获得音频/视频中可寻址范围的数量

start(index) - 获得可寻址范围的开始位置

end(index) - 获得可寻址范围的结束位置

alert("Start: " + this.seekable.start(0) + " End: " + this.seekable.end(0));

buffered

回一个TimeRanges对象,确认浏览器已经缓存媒体文件

属性值

length - 获得音频/视频中已播范围的数量

start(index) - 获得某个已播范围的开始位置

end(index) - 获得某个已播范围的结束位置

alert("Start: " + this.buffered.start(0) + " End: " + this.buffered.end(0));

读写

src

src 属性设置或返回音频/视频的当前来源

loop

可以脚本控制播放,设置为true为循环播放

muted

以脚本控制播放,设置为true为静音

poster

设置视频封面地址

this.poster = 'http://dnt.dkill.net/Images/banner.jpg';

volume

设置或返回音频/视频的音量

规定音频/视频的当前音量。必须是介于 0.0 与 1.0 之间的数字。

preload

置或返回音频/视频是否应该在页面加载后进行加载

属性值

auto 指示一旦页面加载,则开始加载音频/视频。

metadata 指示当页面加载后仅加载音频/视频的元数据。

none 指示页面加载后不应加载音频/视频。

controls

以脚本控制显示工具栏,设置为true为显示

autoplay

以脚本控制播放,设置为true为自动播放

currentTime

获取当前播放位置,返回时间(单位秒)

playbackRate

置或返回音频/视频播放的速度

置或返回音频/视频的默认播放速度

1.0 正常速度

0.5 半速(更慢)

2.0 倍速(更快)

-1.0 向后,正常速度

-0.5 向后,半速

<video id="myvideo"></ video>

$(function () {

var videoObj = $('#myvideo');

var This = videoObj.get(0);

This.controls = true;

This.poster = 'http://dnt.dkill.net/Images/banner.jpg';

This.src = 'images/big.mp4';

});

defaultPlaybackRate

专业酱油12年

设置或返回音频/视频的默认播放速度

1.0 正常速

0.5 半速(更慢)

2.0 倍速(更快)

-1.0 向后,正常速度

-0.5 向后,半速

不会影响当前播放速度

方法

addTextTrack()

向音频/视频添加新的文本轨道

语法

audio|video.addTextTrack(kind,label,language)

kind

规定文本轨道的类型。

"subtitles"

"caption"

"descriptions"

"chapters"

"metadata"

label

字符串值,为文本轨道规定标签。用于为用户对文本轨道进行标识。

language

双字母语言代码,规定文本轨道的语言。

中文

zh

英文

en

案例

canPlayType()

检测浏览器是否能播放指定的音频/视频类型

案例

http://dnt.dkill.net/DNT/HTML5/demo/check.html

load()

重新加载音频/视频元素

play()

开始播放音频/视频

pause()

暂停当前播放的音频/视频

事件

audio(video)媒体事件

事件+描述

abort 当音频/视频的加载已放弃时触发。

canplay 当浏览器可以开始播放音频/视频时触发。

canplaythrough 当浏览器可在不因缓冲而停顿的情况下进行播放时触发。

durationchange 当音频/视频的时长已更改时触发。

emptied 当目前的播放列表为空时触发。

ended 当目前的播放列表已结束时触发。

error 当在音频/视频加载期间发生错误时触发。

loadeddata 当浏览器已加载音频/视频的当前帧时触发。

loadedmetadata 当浏览器已加载音频/视频的元数据时触发。

loadstart 当浏览器开始查找音频/视频时触发。

pause 当音频/视频已暂停时触发。

play 当音频/视频已开始或不再暂停时触发。

playing 当音频/视频在因缓冲而暂停或停止后已就绪时触发。

progress 当浏览器正在下载音频/视频时触发。

ratechange 当音频/视频的播放速度已更改时触发。

seeked 当用户已移动/跳跃到音频/视频中的新位置时触发。

seeking 当用户开始移动/跳跃到音频/视频中的新位置时触发。

stalled 当浏览器尝试获取媒体数据,但数据不可用时触发。

suspend 当浏览器刻意不获取媒体数据时触发。

timeupdate 当目前的播放位置已更改时触发。

volumechange 当音量已更改时触发。

waiting 当视频由于需要缓冲下一帧而停止时触发。

当音频/视频处于加载过程中时,会依次发生以下事件

loadstart

durationchange

loadedmetadata

loadeddata

progress

canplay

canplaythrough

使用方法

常见两种:

addEventListener

$(function () {

var videoObj = $('#myvideo');

var This = videoObj.get(0);

This.controls = true;

This.poster = 'http://dnt.dkill.net/Images/banner.jpg';

This.src = 'images/big.mp4';

This.addEventListener('pause', function () {

alert('视频这么精彩你丫还敢暂停?');

});

});

document.getElementById('myvideo').addEventListener('pause', function () {

alert('视频这么精彩你丫还敢暂停?');

});

属性赋值

$(function () {

var videoObj = $('#myvideo');

var This = videoObj.get(0);

This.controls = true;

This.poster = 'http://dnt.dkill.net/Images/banner.jpg';

This.src = 'images/big.mp4';

This.onpause = myPause;

});

function myPause() {

alert('视频这么精彩你丫还敢暂停?')

}

} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/628179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 泛型编程 类型萃取器的运用

C 泛型编程 类型萃取器的运用 一、C类型萃取器的基本概念与应用&#xff08;Type Traits in C&#xff09;1.1 类型萃取器的定义与作用&#xff08;Definition and Role of Type Traits&#xff09;1.2 类型萃取器的分类与特性&#xff08;Classification and Characteristics …

机器学习极简介绍(二)

人工智能AI 与 机器学习 人工智能、机器学习和深度学习是什么关系&#xff1f; 对于小白来说这些个概念总是混淆&#xff0c;人工智能 ≠ 机器学习&#xff0c;人工智能是更广泛的概念&#xff0c;它包括了所有使计算机系统具备智能行为和能力的技术和方法。机器学习是人工智…

postgres篇---docker安装postgres,python连接postgres数据库

postgres篇---docker安装postgres&#xff0c;python连接postgres数据库 一、docker安装postgres1.1 安装Docker&#xff1a;1.2 从Docker Hub获取PostgreSQL镜像1.3 创建PostgreSQL容器1.4 访问PostgreSQL 二. python连接postgres数据库2.1 connect连接2.2 cursor2.3 excute执…

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头

本文主要记录近期在学习opencv使用过程中的一些细节 前言&#xff1a;ubuntu22.04 OpenCV4.6.0(c)环境配置 opencv的安装过程可参考下面博文&#xff0c;亲测有效&#xff08;容易出现问题的地方在安装下面依赖的时候&#xff0c;一般会出现报错&#xff0c;需要自己换源&…

让你不再疑惑音频如何转文字

随着科技的不断发展&#xff0c;我们现在可以通过各种智能设备来轻松地录制音频。但是&#xff0c;当我们需要将音频中的内容转换成文字时&#xff0c;该怎么办呢&#xff1f;这时候&#xff0c;转换工具就派上用场了&#xff01;那么你知道音频怎么转文字吗&#xff1f;接下来…

CSS2学习笔记

一、CSS基础 1.CSS简介 CSS 的全称为&#xff1a;层叠样式表 ( Cascading Style Sheets ) 。CSS 也是一种标记语言&#xff0c;用于给 HTML 结构设置样式&#xff0c;例如&#xff1a;文字大小、颜色、元素宽高等等。简单理解&#xff1a; CSS 可以美化 HTML , 让 HTML 更漂亮…

【产品经理】成熟产品狗必备特质

在自己从事产品经理这个职位的3年间&#xff0c;看过不少产品经理成长相关的文章书籍&#xff0c;涵盖了挺多经验、素质、能力&#xff0c;平时工作中也会注意学以致用&#xff0c;所以每每回顾此事&#xff0c;都觉得这对自己的工作、个人成长起到了莫大的推进作用。 1、外部合…

Docker是什么、有什么用的介绍

文章目录 1.背景2. Docker 是什么&#xff1f;3.Docker 容器与虚拟机的区别4.Docker 的 6 大优势1、更高效地利用系统资源2、更快的启动时间3、一致的运行环境4、持续交付和部署5、更轻松迁移6、更轻松的维护和拓展 小结 知识搬运工&#xff1a; 原文出自&#xff1a; 原文链接…

网络渗透技术如何自学,自学黑客要多久

学习网络渗透技术是一件靠兴趣驱动的事情&#xff0c;只有强烈热爱一件事才能持之以恒的去做&#xff0c;对于那些三分钟热度的人来说还是劝你放弃吧&#xff0c;因为网络渗透技术自学需要很多方面的知识&#xff0c;没耐心是无法学会的&#xff0c;当然除了有想要学习的决心之…

企业研发提效抓手,揭秘云原生的效能“奇点”

导语 | 在云原生时代&#xff0c;研发效能治理面临新的挑战&#xff0c;同时也获得了新的视角。如何更好地利用云原生技术的优势&#xff0c;从而在根本上提升研发效能&#xff0c;已成为许多企业数字化转型过程中的“必答题”。今天&#xff0c;我们特别邀请了 Thoughtworks 创…

Git操作方法

目录 Git是什么 Git特点 Git作用 Git原理 集中式 分布式 Git安装 修改语言 Git操作 1.初始化Git仓库 2.提交工作区的内容到版本库 3.查看版本记录 4.版本回退 5.版本前进 Git 命令 通用操作 工作状态 版本回退 版本前进 远程仓 1.GitHub 2.GitLab 3.码云…

Amp it up翻译(持续更新)

最近闲来无事&#xff0c;看到了阮一峰在推荐这本书&#xff0c;无奈是英文的&#xff0c;但是机器翻译过来又看不懂。反正自己看的时候也要翻译。于是就自己看的时候&#xff0c;翻译完&#xff0c;理解完顺便写上去&#xff0c;给懒的同学看一下。 书的目录 书的目录太长了&…

C语言---自定义类型:结构体,枚举,联合

&#x1f680;write in front&#x1f680; &#x1f4dd;个人主页&#xff1a;认真写博客的夏目浅石. &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;凡人修C传 &#x1f4ac;总结&#xff1a;希望你看完之后&…

FANUC机器人PROFIBUS DP通信配置方法

FANUC机器人PROFIBUS DP通信配置方法 1. 前提条件: 机器人Profibus功能确认:确认机器人是否加装了Profibus功能。按下示教器MENU—Setup,可查看是否已安装所需的软件,如下图所示,说明已安装profibus功能。 西门子PLC一侧需要安装对应的GSD文件,可从以下链接获取: FANU…

JDBC Utils 详解(通俗易懂)

目录 一、前言 二、JDBCUtils说明 1.背景及起因 : 2.示意图 : 3.JDBCUtils类的定义 三、JDBCUtils应用 1.DML的应用 : 2.DQL的应用 : 四、总结 一、前言 第三节内容&#xff0c;up主要和大家分享一下JDBC Utils方面的内容。注意事项——①代码中的注释也很重要&#x…

暴力递归到动态规划(三)

⭐️前言⭐️ 本篇文章是从暴力递归到动态规划的第三章。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及…

chatgpt赋能python:Python快速创建列表

Python快速创建列表 在Python编程中&#xff0c;列表是一种非常常见的数据类型&#xff0c;它可以容纳多个值。创建列表有多种方式&#xff0c;但是在不同场景下&#xff0c;我们需要使用不同的方法来创建一个高效的列表。本文主要介绍如何快速创建列表的不同方法。我们将深入…

K-verse 合作伙伴访谈|与 Studio Dragon 一起进入韩剧元宇宙世界

穿越时空的韩剧元宇宙。 Studio Dragon 是全球排名第一的生活创作者 CJ ENM 的子公司&#xff0c;是引领韩剧的韩国代表性戏剧工作室&#xff0c;一个以无限故事内容让世界着迷的优质故事讲述者。 通过与 The Sandbox 的合作&#xff0c;我们将提供一种全新体验&#xff0c;让用…

openGauss5.0企业版使用指南之系统架构

文章目录 1. 产品定位2. 3.x版本和5.x版本比对3. openGauss 5.0版本架构4. openGauss 5.0 特点 背景&#xff1a;今年3月openGauss 5.0发布&#xff0c;升级了资源池化内核能力和DataKit数据全生命周期管理工具&#xff0c;整体在性能、安全性与易用性方面均有大幅提升。本次大…

vue-admin-template_home增加全屏开关

1. 安装 npm install screenfull --save 这个指令安装最新版本 npm install screenfull3 VUE2.x的可以指定对应的版本&#xff0c;这样是安装最新的3.x的版本 2. 导入svg文件 在src\icons\svg文件夹下&#xff0c;导入exit-fullscreen.svg和fullscreen.svg, exit-fullsc…