最新HTML5中的视频和音频讲解

news2024/9/21 12:35:42

第6章 HTML5中的视频和音频

H5新增video,audio,播放视频和音频,统称为多媒体元素。

6.1 多媒体元素基本属性

video用于电影文件和其他视频流的播放。

audio用于音乐文件和其他音频流的播放。

video的属性

  • src:文件路径,本地或者网络上。
  • autoplay:自动播放,一进页面就自动播放。
  • width和height:媒体元素大小,单位像素,若不设置则播放源文件大小,只设置1个值会等比例控制视频大小。
  • controls:设置为true时,视频底部有控制条工具,包括播放/暂停,进度条,音量开关大小和速度等功能。
  • poster:所选图片的URL,添加后播放前显示当前图片而不是视频第一帧,视频不可用时遮盖空白,美观。
  • networkState:返回视频文件网络状态,当浏览器读取文件时,将触发progress事件,获取不同各阶段的网络状态值,本属性为只读属性。
    • NETWORK_EMPTY,返回值 0,数据加载初始化
    • NETWORK_IDLE,返回值 1,文件加载成功,等待请求播放
    • NETWORK_LOADING,返回值 2,文件正在加载过程中
    • NETWORK_NO_SOURCE,返回值 3,加载出错,一般原因是没有找到支持的编码格式

audio的属性

  • src:文件路径,本地或者网络上。
  • autoplay:设置为true时,可以直接写属性也是一样的,自动播放,一进页面就自动播放。
  • controls:设置为true时,会出现控制组件,包括进度条,声音大小,静音,播放速度等功能。
1.功能描述

创建video和audio,并在元素的src属性中设置播放的视频和音频,页面加载后自动播放。

需提前准备视频和音频各一个。

2.代码实现
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>使用多媒体元素播放文件</title>
    <script>
        function $$(id) {
            return document.getElementById(id);
        }
        function progress(e) {
            var intState = e.networkState;
            var strState = strByNum(intState);
            var newLi = document.createElement('li');
            newLi.textContent = strState;
            $$("ulVideo").appendChild(newLi)
        }
        /* 
         - NETWORK_EMPTY,返回值 0,数据加载初始化
         - NETWORK_IDLE,返回值 1,文件加载成功,等待请求播放
         - NETWORK_LOADING,返回值 2,文件正在加载过程中
         - NETWORK_NO_SOURCE,返回值 3,加载出错,一般原因是没有找到支持的编码格式
         */
        function strByNum(n) {
            switch (n) {
                case 0: return "数据加载初始化!";
                case 1: return "文件加载成功,等待请求播放!";
                case 2: return "文件正在加载过程中...";
                case 3: return "加载出错,一般原因是没有找到支持的编码格式!";
            }
        }

        function vdoerror(e) {
            var intState = e.error.code;
            var strState = strByErrorNum(intState);
            var newLi = document.createElement('li');
            newLi.textContent = strState;
            $$("ulError").appendChild(newLi)
        }
        /* 
            - MEDIA_ERR_ABORTED,返回值 1,被中止
            - MEDIA_ERR_NETWORK,返回值 2,出现网络错误,获取资源出错
            - MEDIA_ERR_DECODE,返回值 3,媒体资源可用,解码出错
            - MEDIA_ERR_SRC_NOT_SUPPORTED,返回值 4,没找到可以播放的媒体文件格式
         */
        function strByErrorNum(n) {
            switch (n) {
                case 1: return "被中止!";
                case 2: return "出现网络错误,获取资源出错!";
                case 3: return "返回值 3,媒体资源可用,解码出错!";
                case 4: return "没找到可以播放的媒体文件格式!";
            }
        }

    </script>
</head>

<body>
    <!--./static/黑悟空.mp4 -->
    <video id="vdo" src="./static/黑悟空.mp4" autoplay="true" poster="./img/moon.jpg" onprogress="progress(this)"
        onerror="vdoerror(this)" controls width="800px">您的浏览器不支持视频</video>
    <ul id="ulVideo">
        <li>progress事件:</li>
    </ul>
    <ul id="ulError">
        <li>error事件:</li>
    </ul>
    <audio id="ado" src="./static/黄风起兮.mp3" controls="true"></audio>
</body>

</html>
3.页面效果

路径故意写错:

4.源码分析

用两个ul来记录调用progress和error的过程,通过switch来将code转化为对应的意思。

其他属性,了解为主

  • readyState:只读属性,返回当前播放文件的各种状态,属性返回值省略,有需要去查资料。
  • currentTime,startTime,duration:当前播放时间,开始播放时间,总体播放时间。
  • palyed,paused,ended:开始时间和结束时间,是否出于暂停,是否已结束。
  • defaultPlaybackRate,playbackRate:默认播放速率,当前播放速率。
  • volume,muted:播放音量0-1,是否静音。

6.2 多媒体元素常用方法

通过添加“controls”属性显示控制条工具栏。

也可以自定义播放按钮,调用多媒体元素播放文件时的方法。

  • load(),调用时进行文件的加载,将playbackRate设置为默认值,error设置为null。
  • canPlayType(type),检测当前浏览器是否支持媒体文件类型,type=空(不支持),maybe(可能支持),Probably(支持)

6.2 多媒体元素重要事件

除上述networkState和error对应的progress和error事件以外,还有如下事件:

  • playing(),媒体播放事件。
  • timeupdate(),播放位置发生变化,触发该事件。
  • durationchange(),播放总长度改变时触发。
  • volumechange(),改变或启动静音时触发。

其他的事件有需要查资料。

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

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

相关文章

Android经典实战之SurfaceView原理和实践

本文首发于公众号“AntDream”&#xff0c;欢迎微信搜索“AntDream”或扫描文章底部二维码关注&#xff0c;和我一起每天进步一点点 SurfaceView 是一个非常强大但也相对复杂的 UI 组件&#xff0c;特别适用于对性能要求较高的绘制任务&#xff0c;如视频播放、游戏等。 1. Su…

Java 方法的定义

目录 1.Java的方法类似于其他语言的函数&#xff0c;是一段用来完成特定功能的代码片段。 2.方法包含一个方法头和方法体&#xff0c;下面是一个方法的所有部分&#xff1a; &#xff08;1&#xff09;修饰符&#xff1a;可选。告诉编译器如何调用该方法&#xff0c;定义了该…

Java笔试面试题AI答之JDBC(2)

文章目录 7. 列出Java应该遵循的JDBC最佳实践&#xff1f;8. Statement与PreparedStatement的区别,什么是SQL注入&#xff0c;如何防止SQL注入Statement与PreparedStatement的区别什么是SQL注入如何防止SQL注入 9. JDBC如何连接数据库&#xff1f;1. 加载JDBC驱动程序2. 建立数…

Python复杂网络社区检测:并行谱聚类算法设计与多种算法应用实战研究

原文链接&#xff1a;https://tecdat.cn/?p37574 分析师&#xff1a;Leiyun Liao 在当今的网络科学领域&#xff0c;复杂网络中的社区检测成为了一个至关重要的研究课题。随着信息技术的飞速发展&#xff0c;各种大规模网络不断涌现&#xff0c;如社交网络、生物网络等。准确地…

chapter12-异常(Exception)——(作业)——day15

目录 457-异常课后作业 458-异常课后作业2 457-异常课后作业 package chapter12.exception.homework;/*** author LuHan* version 1.0*/ public class Homework01 {public static void main(String[] args) {try {if(args.length!2){throw new ArrayIndexOutOfBoundsException…

立创商城9.9免邮活动开始啦!

从9月2日起&#xff0c;立创商城推出免邮活动&#xff0c;每月在领券中心>精选专区领取免邮券&#xff0c;即可享受满9.9元使用免邮券服务。 未注册的用户&#xff0c;可扫描下方二维码注册哦~

2024高教社杯数学建模国赛ABCDE题选题建议+初步分析

提示&#xff1a;DS C君认为的难度&#xff1a;C<B<A&#xff0c;开放度&#xff1a;A<C<B 。 D、E题推荐选E题&#xff0c;后续会直接更新E论文和思路&#xff0c;不在这里进行选题分析&#xff0c;以下为A、B、C题选题建议及初步分析 A题&#xff1a;“板凳龙”…

AI技术的新篇章:GPT Next、Gemini 2、GPT-6 和千代理人探索虚拟世界

在AI技术飞速发展的今天&#xff0c;许多令人兴奋的突破正逐渐进入公众视野。最近的新闻显示&#xff0c;诸如OpenAI的GPT Next、Google的Gemini 2.0、GPT-6以及模拟虚拟世界中的1000个AI代理人等前沿项目&#xff0c;标志着人工智能领域即将进入一个全新阶段。本文将深入探讨这…

多线程的简单了解——多客户端链接

在前面的学习中发现我们的聊天室功能只能有一个客户端接入服务端中&#xff0c;第二个客户端想要接入服务端中必须要等待第一个客户端输入结束才能接入。 这很明显不符合实际应用的开发&#xff0c;现在我们就来学习Java中一个重要的知识&#xff0c;多线程来解决这个问题。我们…

内存管理篇-22 高端内存和低端内存的分界线

这节课讲的主是为了区分低端内存和高端内存的是如何区分的&#xff1f;内核空间的划分是可以配置的。为了查看现象&#xff0c;通过qemu设置物理内存为不同情况。 结论&#xff1a;线性映射区的大小&#xff0c;和page_offset(内核起始地址0x80000000还是0xc0000000)和物理内存…

oracle startup失败,ORA-01078: failure in processing system parameters

SQL> startup ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file /data/oracle/product/11.2.0/db_1/dbs/initorc1.ora 出错的原因可能是&#xff1a;文件名字不正确&#xff0c;文件权限不对&#xff0c;文件不存在&#x…

铁打的程序员轻易“不哭”-我的大模型创业近2年来的感悟

楔子 2022年11月&#xff0c;GPT-3发布那一刻&#xff0c;我被AI的强大能力所震撼&#xff0c;意识到“超级个体”时代的来临。自那时起&#xff0c;我开始全心投入创业&#xff0c;经历了许多苦乐交织的时光。 2023年6月&#xff0c;我尝试将AI应用于智能营销导购&#xff0…

143.布隆过滤器原理以及Go使用示例

文章目录 1. 是什么&#xff1f;2. 干什么&#xff1f;3. 为什么&#xff1f;4. 有什么问题&#xff1f;5. Go使用布隆过滤器单机版(Golang)分布式版(Java) 1. 是什么&#xff1f; 它是一个二进制bit数组&#xff0c;初始为 0 采用位存储数据结构&#xff0c;节省存储空间 1…

学学vue-1

vue 0 安装 装node.js&#xff0c;以及cnpm&#xff08;npm超时或者被屏蔽&#xff0c;安装cnpm国内镜像&#xff09; 查看安装版本&#xff08;是否安装成功&#xff09; node -v 安装成功之后也会安装npm npm -v cnpm镜像 npm install -g cnpm --registryhttp://registry.np…

spring如何解决bean的循环依赖

通过三级缓存解决循环依赖问题。 其中一级缓存用于存储完整的bean&#xff1b;二级缓存用于存储已经完成aop动态代理的bean&#xff0c;防止重复创建动态代理&#xff1b;三级缓存存储未实现aop动态代理和为实现依赖注入的bean。getBean()时先从一级缓存取&#xff0c;没有取二…

s3c2440---PWM使用之蜂鸣器驱动移植

一、蜂鸣器驱动介绍 1.1.什么是蜂鸣器 蜂鸣器是一种简单的声响发生器&#xff0c;常用于电子产品中作为警示或提醒作用。其基本原理是通过交替改变直流电的电压方向来产生声音&#xff0c;一般使用交替电流产生声音会比较稳定。 1.2.蜂鸣器的类别 1.有源蜂鸣器 1&…

2024 数学建模高教社杯 国赛(A题)| “板凳龙”舞龙队 | 建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用等距螺线&#xff0c;多目标规划等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量身打造创新解决方案。小秘籍团队&#xff0c;始终引领着建模问题求解的风潮。 抓紧小秘籍&am…

嵌入式S3C2440:控制LED灯

发光二极管接口&#xff08;左端&#xff09;应为低电平 以LED1为例 LED1的接口为GPB5 void led_init(void) {//配置GPB5功能为输出GPBCON & ~(0x3 << 10);GPBCON | (0x1 << 10); //使GPB5输出高电平(关灯)GPBDAT | (1 << 5); }void led_on(void) {GPB…

【重学 MySQL】十一、SQL 概述

【重学 MySQL】十一、SQL 概述 SQL 背景知识产生与发展主要特点主要应用SQL语言的发展趋势 SQL 语言排行榜SQL 分类数据查询语言&#xff08;DQL, Data Query Language&#xff09;数据操纵语言&#xff08;DML, Data Manipulation Language&#xff09;数据定义语言&#xff0…

产品图片小程序开发:全方位指导,让产品展示更出色

想要快速开发并上线一个展示产品图片的小程序吗&#xff1f;乔拓云平台是您的理想选择。只需简单几步&#xff0c;即可打造专属的小程序平台。 首先&#xff0c;访问乔拓云官方网站&#xff0c;注册并登录您的账号。在小程序后端&#xff0c;您可以自由探索丰富的模板库&#x…