使用HTML5与JavaScript自制简单视频播放器

版权申诉
15 下载量 138 浏览量 更新于2024-09-11 1 收藏 40KB PDF 举报
"本文将介绍如何使用JavaScript实现一个简单的HTML5视频播放器,结合HTML5的新特性,创建一个跨平台、适应未来趋势的网页播放器。我们将探讨如何控制视频播放、调整音量、全屏切换等功能,并展示核心的JavaScript代码片段。" 在HTML5中,我们不再依赖Flash或ActiveX等技术来实现网页视频播放。HTML5提供了原生的`<video>`标签,可以直接在浏览器中播放视频,同时提供了API接口,允许开发者通过JavaScript进行交互式控制。以下是一些关键知识点: 1. **HTML5 `<video>` 标签**: `<video>`元素是HTML5中的核心组件,用于在网页上嵌入视频内容。基本结构如下: ```html <video id="html5_video" controls> <source src="your_video.mp4" type="video/mp4"> <!-- 可以添加多个<source>标签,支持不同格式的视频源 --> Your browser does not support the video tag. </video> ``` 其中的`controls`属性会自动添加标准的播放、暂停、进度条等控件。 2. **JavaScript 控制视频**: 我们可以通过JavaScript访问`<video>`元素并调用其方法来控制视频播放。例如,`play()`和`pause()`方法用于播放和暂停视频,`currentTime`属性可以获取或设置视频当前播放的时间,`duration`属性表示视频总时长。 3. **事件监听**: 使用JavaScript的事件监听机制可以响应用户操作,如播放、暂停、结束等。例如,监听`play`、`pause`、`ended`事件,可以自定义播放状态的反馈。 4. **样式控制**: 在示例中,使用了`className`属性来切换播放按钮的样式,这涉及到CSS类名的管理。`className`可以用来添加、删除或替换元素的类名,从而改变元素的样式。 5. **时间格式化函数`: `formatTime(seconds)`用于将秒数转换为分钟:秒的格式,方便显示在界面上。这是一个实用的辅助函数,可以确保时间显示始终正确。 6. **进度条控制**: 用户点击进度条时,计算相对于进度条的相对位置,然后设置`currentTime`属性更新视频播放位置。这需要计算鼠标点击位置与进度条左边缘的相对距离,并转换为视频播放时间。 7. **音量控制**: 通过`volume`属性可以获取或设置视频的音量。`mute`和`unmute`方法用于静音和取消静音。 8. **全屏切换**: HTML5提供了`requestFullScreen()`方法使元素全屏显示,而`exitFullscreen()`则退出全屏。需要注意的是,全屏功能可能受到浏览器安全策略的限制,需要处理好兼容性问题。 9. **状态管理**: 示例中使用了`playing`, `mute`, `vol`, `fs`等变量来跟踪播放状态,这有助于保持播放器UI与实际视频状态同步。 10. **定时器和活动检测**: `inactivityTimeout`和`timer`可能是用来实现无操作自动暂停的功能,当用户一段时间内未操作,可以暂停视频播放,节省资源。 通过以上这些知识点,我们可以构建出一个基本的HTML5视频播放器。随着HTML5的普及,这样的播放器不仅适用于桌面端,也能很好地适应移动设备,提供一致的用户体验。在实际项目中,还可以进一步完善,比如添加字幕支持、自定义播放控制、预加载策略等高级功能。
860 浏览量
autoscroll(true,false):当播放列表过长的时候,默认会自动显示滚动条。当该值设置为’true’的时候,会自动根据鼠标滚动播放列表。 displaywidth(number of pixes):设置显示区域的宽度,当设置的比较小的时候,播放列表会显示在显示区域的右侧而不是底部。 kenburns* (true,false): 用以实现在运动的时候实现kb效果(Ken Burns effect),注意,当图比较大,而且网速比较快的时候,建议打开,否则关闭。建议设置transition为"slowfade"来配合。 largecontrols (true,false): 设置该值为true用来放大控制区域的按钮。建议为视力不好的用户打开 logo* (url): 设置一个图片用来作为右上角的水印,支持所有图片格式,支持通明图层的png效果最佳。 overstretch* (true,false,fit,none): 设置图片/影片在显示区域的缩放。"true"等比例拉伸用来符合显示区域。"false"仅拉伸合显示区域。"fit"全屏显示。"none"显示原始大小。JW Media Player等默认为"fit",JW Image Rotator默认为"false" showdigits (true,false,total): 设置为"false"隐藏播放时间等信息用来节省控制区域的空间。设置为"total"用来显示全部时间。 showdownload (true,false):设置该值用来在控制区域显示下载按钮。链接到link所设置的地址。 showeq (true,false): 用来显示一个假的音频波动效果。当播放mp3的时候打设置该值可以得到很好的效果 showicons* (true,false): 用来显示或者隐藏显示区域中间的图片,JW Media Player等默认为true。JW Image Rotator默认为false; showvolume (true,false): 用来设置是否显示音量控制按钮 thumbsinplaylist (true,false): 设置列表中是否显示预览图 播放参数 autostart (true,false,muted): 设置为ture,页面加载完后会自动播放。设置为muted,会在静音模式下自动播放,并且显示区域中间有静音图标。bufferlength (number): 设置flv的缓存时间。默认为3秒 repeat* (true,false,list): 默认为flase,从当前播放位置播放到列表尾部后停止。设置为list会播放列表中所有的项目,设置为true会循环播放。 rotatetime* (number): 设置图片的显示时间。JW Media Player等默认为10秒,JW Image Rotator默认为5秒 shuffle* (true,false): 设置为false顺序播放,设置为true无序播 smoothing (true,false): 设置为false关闭视频平滑处理,推荐设置true用以得到更好效果。但对于大屏幕或者配置低的机器设置false是有好处的 start* (second): 在使用RTMP 或 HTTP 流媒体的时候(非常规的flv/mp3),使用该变量准确的定位开始位置。该参数设置在XSPE格式的列表中以便准且的设置文件的章节。 volume* (number): 设置音量,默认为80. 互动参数 audio* (url):用这个参数来添加一个mp3文件作为单独的音频,可以作为图片的背景音乐解说等。 bwfile (url):用以带宽检测的文件的地址,可以放一个图片,或者rtmp流媒体。可以在右键菜单中查看到贷款数值。 bwstreams (comma-separated list of bitrates): 和bwfile配合使用,根据带宽值来选择不同的文件。如:你要播放video.flv并且设置该项的值为100,250,500,1000,当播放器发现带宽为349kbps的时候,将会播放video_250.flv。所以他有一套有效的命名设置,他将会自动切换,哪怕是在采用播放列表的情况下。 callback (url):设置这个参数为服务端程序(php/asp)地址用来回传数据。在每个项播放和停止的时候会发送数据到服务器,以便在服务器端保存播放统计。 captions (url): 设置该值用以载入一个文本格式的文本作为字幕。播放器至支持SMIL格式和DVD的SRT格式的字幕。如果你的flv文件内置字体你可以设置该值为"captionate".如果你有多频道字幕,可以设置这个值为"captionate0", "captionate3"等。可以在列表中设置每一个项的值。 enablejs* (true,false): 设置为true打开对javascript的支持。仅支持在线使用。javascript可以控制播放,加载媒体,获得当前播放项的详尽信息。 fsbuttonlink (url):如果用户的flashplayer版本高于(9.0.28)播放器会自动的显示一个全屏按钮。通过设置该值,你可以链接到另外的页面用以全屏显示。服务端程可以设定将要播放的文件。 id (string): 播放器的唯一标识。将会被回传到服务器端。 javascriptid* (string):如果你的页面上有多个播放器,你可以设置这个参数给每个播放器不同的id,这样就可以方便的用javascript来控制。他将回传到getUpdate()事件中。 link (url): 通过这个参数用来设置一个可现在的版本,或者强制用户通过该地址下载当前项。可以在播放列表中为每一项设置该值。 linkfromdisplay* (true,false):设置显示区域被点击时要访问的页面。默认点击显示区域时会进行播放/暂停操作。 linktarget* (frame): 设置链接目标,"_self"在当前页打开。"_blank"在新页面中打开。 streamscript (url):设置这个参数为了兼容‘伪流媒体’FLV文件。 type (mp3,flv,rtmp,jpg,png,gif,swf,rbs,3gp,mp4,m4v): 播放器会根据文件名的最后三个字符来判断类型。在你使用服务器端语言进行重定向时,这种方法将不会再有效。所以你可以设置这个参数来告诉播放器文件类型。你也可以在播放列表中对每一项进行设置。如果播放器找不到文件类型将会被识别为播放列表。 useaudio (true,false): 设置为false用来改变为静音状态。 usecaptions (true,false):设置为false隐藏字幕. usefullscreen (true,false):如果你不希望用flashplayer9的全屏模式。可以设置"fsbuttonlink"参数用来替换全屏按钮的事件。 usekeys (true,false): 设置为"false"用来取消键盘操作(SPACE,UP,DOWN,LEFT,RIGHT) 注意:你必须对?=&进行字符转移。? → %3F, = → %3D, & → %26. 你的"file" 变量为getplaylist.php?id=123的时候必须设置为 getplaylist.php%3Fid%3D123.