HTML5+JavaScript实现本地视频/音频播放器

HTML5+JavaScript实现本地视频/音频播放器

HTML5 提供了本地视频和音频播放器的支持,通过 <video> 和 <audio> 标签,这些标签支持多种媒体格式,并且可以通过 JavaScript 进行控制,实现功能比较完整的本地视频音频播放器。

HTML5的<video>和<audio>标签是HTML5中新增的两个标签,分别用于在网页播放视频和音频内容。<video>标签主要用于播放视频,同时也支持播放音频。<audio>标签主要用于播放音频,不支持播放视频。

本地视频/音频播放器

使用HTML5的<video>标签实现本地视频/音频播放器

运行效果

源码如下:

<!DOCTYPE html>  
<html lang="en">  
<head>  <meta charset="UTF-8">  <title>本地视频/音频播放器</title>  <style>  /* 样式可以根据需要自定义 */  #video-player {  width: 640px;  height: 360px;  }  #controls {  margin-top: 10px;  }  </style>  
</head>  
<body>  <video id="video-player" controls>  您的浏览器不支持 Video 标签。  </video>  <div id="controls">  <input type="file" id="file-input" accept="video/*, audio/*">  <button id="play-video">播放</button>  </div>  <script>  const videoPlayer = document.getElementById('video-player');  const fileInput = document.getElementById('file-input');  const playVideoButton = document.getElementById('play-video');  fileInput.addEventListener('change', function() {  const file = this.files[0];  if (file) {  const reader = new FileReader();  reader.onload = function(e) {  // 创建URL对象  const url = URL.createObjectURL(file);  // 设置视频源  videoPlayer.src = url;  };  // 读取文件内容  reader.readAsDataURL(file);  }  });  playVideoButton.addEventListener('click', function() {  if (videoPlayer.readyState >= 3) { // 确保视频已经加载完毕  videoPlayer.play();  } else {  alert('视频还未加载完毕,请稍后再试。');  }  });  </script>  
</body>  
</html>

使用HTML5的<video>标签实现功能本地视频/音频播放器比较精炼。

其中<input type="file" id="file-input" accept="video/*, audio/*"> 是一个HTML的输入元素,用于让用户从其计算机中选择一个或多个文件。

<input type="file">: 这告诉浏览器这是一个文件输入字段,用户可以通过点击它来选择文件。

id="file-input": 这是一个唯一的标识符,用于在JavaScript中引用这个元素。通过这个ID,你可以添加事件监听器、获取用户选择的文件等。

accept="video/*, audio/*": 这是一个属性,用于限制用户可以选择的文件类型。accept 属性的语法accept="MIME_type/subtype":指定一种文件类型。MIME(Multipurpose Internet Mail Extensions)类型是一种标识文档、文件或字节流的性质和格式的标准。它由两部分组成:类型(如 text、image、audio、video 等)和子类型(具体的文件格式,如 html、jpeg、mp3 等)。可以指定多个值,用逗号分隔,如本句;可以使用星号(*)作为通配符,如表示接受所有视频格式。如果你只想接受特定格式的视频,比如MP4,你可以使用 accept="video/mp4"。

更多示例:

如果你想让用户选择所有类型的图像文件,你可以使用通配符:

<input type="file" name="pic" accept="image/*">

如果你想让用户只能选择GIF和JPEG图像文件,你可以这样写:

<input type="file" name="pic" accept="image/gif, image/jpeg">

本地音频播放器

使用HTML5的<audio>标签实现本地音频播放器

先给出运行效果:

源码如下:

<html lang="en">  
<head>  <meta charset="UTF-8">  <title>本地音频播放器</title>  <style>  /* 样式可以根据需要自定义 */  #audio-player {  width: 620px;  height: 160px;  }  #controls {  margin-top: 10px;  }  </style>  
</head>  
<body>  <audio id="audio-player" controls>  您的浏览器不支持 audio 标签。  </audio>  <div id="controls">  <input type="file" id="file-input" accept="audio/*">  <button id="play-audio">播放</button>  </div>  <script>  const audioPlayer = document.getElementById('audio-player');  const fileInput = document.getElementById('file-input');  const playAudioButton = document.getElementById('play-audio');  fileInput.addEventListener('change', function() {  const file = this.files[0];  if (file) {  const reader = new FileReader();  reader.onload = function(e) {  // 创建URL对象  const url = URL.createObjectURL(file);  // 设置视频源  audioPlayer.src = url;  };  // 读取文件内容  reader.readAsDataURL(file);  }  });  playAudioButton.addEventListener('click', function() {  if (audioPlayer.readyState >= 3) { // 确保视频已经加载完毕  audioPlayer.play();  } else {  alert('视频还未加载完毕,请稍后再试。');  }  });  </script>  
</body>  
</html>

附录

HTML5超级链接、图片与多媒体https://blog.csdn.net/cnds123/article/details/113782944

使用HTML和JavaScript实现用打开窗口播放本地的媒体(视频音频)文件https://blog.csdn.net/cnds123/article/details/113835795

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

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

相关文章

MySQL 8.0 新特性之 Clone Plugin

个人感觉&#xff0c;主要还是为 Group Replication 服务。在 Group Replication 中&#xff0c;如果要添加一个新的节点&#xff0c;这个节点差异数据的补齐是通过分布式恢复&#xff08; Distributed Recovery &#xff09;来实现的。 在 MySQL 8.0.17 之前&#xff0c;只支…

【数据结构】队列(链表模拟队列)

学习本章节必须具备 单链表的前置知识&#xff0c; 建议提前学习&#xff1a;点击链接学习&#xff1a;单链表各种功能函数 细节 详解 本章节是学习用 单链表模拟队列 队列&#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff…

javase基础汇总学习

目录 背景步骤宏观微观理论基础用法面向对象数据类型基础语法&#xff08;关于方法&#xff09;try&#xff08;正常的逻辑代码&#xff09;catch&#xff08;这个和异常有关系&#xff09;finally&#xff08;经典面试题&#xff09; 高阶使用序列化泛型注解反射 总结 背景 后…

大型网站系统架构演化实例_3.使用服务集群改善网站并发处理能力

1.使用服务集群改善网站并发处理能力 使用集群是网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时&#xff0c;不要企图去更换更强大的服务器&#xff0c;对大型网站而言&#xff0c;不管多么强大的服务器&#xff0c;对大型网站而言&…

Jenkins 的构建时执行时间问题

我们希望我的项目能够在特定的时间自动执行&#xff0c;我们需要设定一个定时任务。 Jenkins 的定时任务是通过 Cron 任务来实现的&#xff0c;但是由有点不一样。 H/2 * * * * 比如说上面的设置就是每 2 分钟执行一次。 希望每分钟执行一次 Jenkins 的每分钟执行一次的设置…

【AI工具之Prezo如何自动生成PPT操作步骤】

先说优缺点&#xff1a; 最大的优点就是免费&#xff08;但说实话功能和体验方面很弱&#xff09;支持中文提问&#xff08;最好用英文&#xff09;&#xff0c;智能生成图文&#xff08;但是只能生成英文内容&#xff09;可以AI生成图片&#xff0c;图片很精美酷炫&#xff0…

Eureka基础介绍和使用

目录 一.理论基础 二.父项目 2.1 新建父项目 2.2 管理依赖 三.子项目 3.1 新建子项目 3.2 注册中心Server依赖和启动类和配置文件 3.3 生产者Client 依赖和启动类和配置文件 3.5 消费者Custmer依赖和配置类、启动类和配置文件 四.心跳 五.公共资源项目 5.1新建实体…

空心电抗器的matlab建模与性能仿真分析

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 空心电抗器是一种无铁芯的电感元件&#xff0c;主要由一圈或多圈导线绕制在非磁性材料制成的空心圆筒或其他形状的骨架上构成。其工作原理基于法拉第电磁感应定律&#xff0c;…

【计算机组成原理】加法器原理及其优化

苏泽 本专栏纯个人笔记作用 用于记录408 学习的笔记记录&#xff08;敲了两年码实在不习惯手写笔记了&#xff09; 如果能帮助到大家当然最好 但由于是工作后退下来备考 很多说法和想法都会结合实际开发的思想 可能不是那么的纯粹应试哈 希望大家挑选自己喜欢的口味食用…

现代商业中首席人工智能官(CAIO)的角色与影响

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

备战面试K8S

备战面试&&K8S Kubernetes关于DockerDocker的优缺点分析 WebAssemblyWebAssembly与Container比较 CtrCrictlCtr和CriCtl的区别 Pod生命周期PodConditions容器状态Pod容器组成生命周期的流程 Kubelet EFK日志采集工具的优缺点 Kubernetes 容器运行接口 Container Runti…

CTFHub(web SQL注入)

CTFHub技能树 Web-SQL注入 详解_666c6167-CSDN博客 Ctfhub - web -- SQL注入_ctfhub sql注入-CSDN博客 整数型注入 方法一 根据提示输入1&#xff0c; 闭合方式就是 1 &#xff0c;整数型 存在两列&#xff0c;这里已经给出了字段&#xff0c;不需要再order by了 爆出数据库…

yolov7模型输出层预测方法解读

本文从代码的角度分析模型训练阶段输出层的预测包括以下几个方面&#xff1a; 标注数据&#xff08;下文统称targets&#xff09;的正样本分配策略&#xff0c;代码实现位于find_3_positive。候选框的生成&#xff0c;会介绍输出层的预测值、GT、grid、 anchor之间的联系损失函…

算法练习第20天|回溯算法 77.组合问题 257. 二叉树的所有路径

1.什么是回溯算法&#xff1f; 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。其本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案。 2.为什么要有回溯算法? 那么既然回溯法并不高效为什么还要用它呢&#xff1f; 因为有的问题能暴力…

Hive进阶(2)----HDFS写入数据流程(赋图助君理解)

HDFS写入数据流程 一、写入流程 1、 Client向NameNode发起RPC请求&#xff0c;来确定请求文件block所在的位置&#xff1b; 2、 NameNode会视情况返回文件的部分或者全部block列表&#xff0c;对于每个block&#xff0c;NameNode都会返回含有该block副本的DataNode地址&…

Ubuntu22.04.4 - 网络配置 - 笔记

一、设置固定ip 1、cd /etc/netplan 查看文件夹下的配置文件 我这里叫 00-installer-config.yaml 2、sudo nano /etc/netplan/00-installer-config.yaml 完成配置后&#xff0c;按下Ctrl O保存更改&#xff0c;然后按下Ctrl X退出nano编辑器。 3、sudo netplan apply 4、ip …

前端开发攻略---合并表格单元格,表格内嵌套表格实现手风琴效果。

1、演示 2、思路 1、用传统的 <table></table> 表格标签来实现比较麻烦。因此通过模拟 表格标签 的写法用<div></div>来实现 2、表头和表格列数是相同的&#xff0c;因此可以确定代码结构 <div class"table"><div class"head…

PotPlayer 图像截取

PotPlayer 图像截取 1. PotPlayer2. PotPlayer 下载2.1. PotPlayer 240305 3. 图像截取References 1. PotPlayer http://www.potplayercn.com/ PotPlayer 是 KMPlayer 原作者姜勇囍进入新公司 Daum 之后推出的&#xff0c;继承了 KMPlayer 所有的优点&#xff0c;拥有异常强大…

Flask项目在Pycharm中设置局域网访问

打开PyCharm导入本应用。点击Run标签中的Edit Configurations 其中Target type选择Script path&#xff0c;Target填入本项目中app.py的路径&#xff0c;Additional optional填入--host0.0.0.0(不要有空格)。 再重新运行项目&#xff0c;会观察到除了原本的http://127.0.0.1:50…

【EI会议征稿通知】2024年图像处理、机器学习与模式识别国际学术会议(IPMLP 2024)

2024年图像处理、机器学习与模式识别国际学术会议&#xff08;IPMLP 2024) 2024 International Conference on Image Processing, Machine Learning and Pattern Recognition 重要信息 大会官网&#xff1a;www.ipmlp.net&#xff08;点击参会/投稿/了解会议详情&#xff09;…