`

HTML视频播放与帧捕捉

 
阅读更多
改代码功能为:

每隔5秒就会捕捉视频的一帧,并将其放在旁边的4*4的canvas上,当点击旁边canvas的帧时,视

频就会回到该帧重新播放。

 <!doctype html>

<html>
	<video id="movies" autoplay oncanplay="startVideo()"
		onended="stopTimeLine()" autobuffer="true" width="400" height="300" >
	<source src="392612.mp4" />
	</video>

	<canvas id="timeLine" width="400px" height="300px"></canvas>

	<script type="text/javascript">
var updateInterval = 1000;
var frameWidth = 100;
var frameHeight = 75;
var frameRows = 4;
var frameColums = 4;
var frameGrid = frameRows * frameColums;
var frameCount = 0;
var intervalId;
var videoStarted = false;

function updateFrame() {
	var video = document.getElementById("movies");
	var ctx = timeLine.getContext("2d");

	var framePosition = frameCount % frameGrid;
	var frameX = (framePosition % frameColums) * frameWidth;
	var frameY = (Math.floor(framePosition / frameRows)) * frameHeight;
	ctx.drawImage(video, 0, 0, 400, 300, frameX, frameY, frameWidth,
			frameHeight);
	frameCount++;
}

function startVideo() {
	if (videoStarted) {
		return;
	}
	videoStarted = true;
	updateFrame();
	intervalId = setInterval(updateFrame, updateInterval);

	var timeLine = document.getElementById("timeLine");
	timeLine.onclick = function(evt) {
		var offX = evt.layerX - timeLine.offsetLeft;
		var offY = evt.layerY - timeLine.offsetTop;
		var clickedFrame = Math.floor(offY / frameHeight) * frameRows;
		clickedFrame += Math.floor(offX / frameWidth);
		var seekedFrame = (((Math.floor(frameCount / frameGrid)) * frameGrid) + clickedFrame);

		if (clickedFrame > (frameCount % 16)) {
			seekedFrame -= frameGrid;
		}
		if (seekedFrame < 0) {
			return;
		}
		
		var video = document.getElementById("movies");
		video.currentTime = seekedFrame*updateInterval/1000;
		frameCount = seekedFrame;
	}
	
	function stopTimeLine(){
	 clearInterval(intervalId);
	}
}
</script>
</html>



效果如下:



  • 大小: 87.6 KB
分享到:
评论

相关推荐

    h5截取视频当前一帧图片

    总结起来,实现“h5截取视频当前一帧图片”涉及到前端的HTML5 Canvas与videojs库,以及后端的视频处理和Nginx的跨域配置。通过这些技术,我们可以在网页上流畅地播放视频并轻松地捕捉任何时刻的画面。

    html5 canvas 绘制的视频播放控制条

    在这个项目中,我们利用HTML5 Canvas来实现一个自定义的视频播放控制条,以此替换HTML视频元素默认的控制界面,提升用户界面的美观度和交互性。 1. **HTML5 Video Element** HTML5的`&lt;video&gt;`标签是用来嵌入视频...

    HTML5视频播放点击爆炸效果.zip

    总的来说,"HTML5视频播放点击爆炸效果"是一个结合了HTML5`&lt;video&gt;`元素、JavaScript和可能的CSS或Canvas技术的创新交互设计,它展示了HTML5和JavaScript在现代网页开发中的强大能力,为用户提供更直观、更具吸引力...

    ArtPlayer是一款现代HTML5视频播放器

    提供了屏幕截图和视频帧截图功能,便于用户捕捉精彩瞬间,也可以用于视频内容的预览和分享。 8. **响应式设计** 考虑到现代网页的响应式布局需求,ArtPlayer能够很好地适应不同屏幕尺寸和设备类型,无论是桌面端...

    js现实的摄像头手势识别控制视频播放_JavaScript_HTML_下载.zip

    标题中的“js现实的摄像头手势识别控制视频播放”是一个基于JavaScript和HTML的项目,它实现了通过摄像头捕捉用户的手势,并根据识别的手势来控制视频播放的功能。这一技术结合了计算机视觉、图像处理以及Web前端...

    Camvas一个简单的HTML5库用于将网络摄像头视频流式传输到canvas对象

    3. **实时更新**:库会定期(通常是每帧)更新canvas上的图像,确保画面始终与摄像头的实时视频同步。 4. **图像处理**:由于视频流被绘制到canvas上,开发者可以利用canvas的绘图API对视频每一帧进行像素级别的操作...

    播放摄像头的视频流

    在IT领域,尤其是在多媒体开发和计算机视觉应用中,播放摄像头的视频流是一项基本技能。摄像头作为输入设备,能够捕获实时视频数据,并将其传输到计算机系统进行处理或展示。本篇将详细介绍如何在不同的编程环境和...

    flash 视频运动检测

    "Flash视频运动检测"是指通过Flash平台利用特定算法分析视频帧序列,以识别和跟踪画面中的运动物体。这一技术在游戏、监控、互动应用等方面具有广泛的应用价值。 一、Flash视频基础 Flash支持SWF格式的视频播放,它...

    VLC视频播放器在HTML中控制的实现(包括截图功能)

    4. **截图功能**:VLC的JavaScript API提供了`snapshot()`方法,该方法可以捕捉当前帧的画面并保存为图片。通常需要设置一个回调函数来处理生成的截图文件。 5. **RTSP实时流播放**:VLC支持RTSP协议,这意味着它...

    简单的实现视频流自换

    这些库提供了接口,可以方便地获取视频帧,进行预处理,并将其打包成适合网络传输的数据格式。 2. **编码与解码**:采集到的原始视频数据需要经过编码才能高效地在网络上传输。常见的视频编码标准有H.264、H.265...

    摄像头转成web视频流无验证版

    OpenCV提供API接口可以访问本地摄像头或树莓派摄像头,读取视频帧,并将其转化为适合通过网络传输的格式,如Motion JPEG或H.264编码的视频流。 树莓派作为一款低成本、低功耗的微型计算机,常被用作物联网项目和...

    视频WEB插件_demo.zip

    对于监控系统而言,视频预览功能让用户能够迅速了解摄像头当前捕捉到的画面,而无需打开完整的视频流,节省了带宽和计算资源。 4. **视频回放**:视频回放功能允许用户在特定时间点查看过去的录像,这对于分析事件...

    Canvas动画转视频-前段框架whammy

    Whammy的工作原理是捕捉Canvas的每一帧,将其编码为WebM容器中的图像块(也称为VP8编码),然后将这些块串联起来形成连续的视频流。这个过程涉及到多个步骤: 1. **捕获Canvas帧**:首先,你需要定期调用`canvas....

    Python项目开发实战:视频监控系统(案例教程实例课程).pdf

    - **目标检测与人脸识别**:使用OpenCV提供的算法进行目标检测和人脸识别,将检测结果以标记框或标签的形式展示在视频帧上。 3. **视频存储与回放** - **视频存储**:将处理后的视频帧保存为视频文件,支持多种...

    vue+nodejs 将canvas发布到dlna投屏服务

    在这个项目中,Canvas被用来捕获实时的视频帧,这些帧通常是以RGB或者其他格式存储的像素数据。要将Canvas的内容转化为H264编码,需要利用FFmpeg库,这是一个强大的多媒体处理框架,包含有avcodec、avformat、...

    web页面完美调用海康摄像头demo,支持预览、抓拍、录像、最重要的是支持云台

    开发者需要对这些协议有深入的理解,并且能够利用JavaScript、HTML5的MediaSource Extensions (MSE) 或WebRTC等技术将视频流解码并在网页上播放。 其次,“抓拍”功能是指在网页上点击按钮时,摄像头能即时捕获一帧...

    使用javascript实现监控视频播放并打印日志

    JavaScript通过事件监听机制可以捕捉视频播放过程中的各种事件。在示例代码中,定义了一个`eventTester`函数,该函数的作用是为视频元素添加指定事件的监听器,并在事件触发时执行日志打印操作。 #### 事件列表 - `...

    VFM.rar_vfm_video stream_摄像头 视频流

    视频流是指将连续的视频帧通过网络或存储设备进行传输的方式,这些帧按时间顺序排列,形成连续的动态画面。在摄像头应用中,视频流通常以数字化的形式存在,由摄像头的传感器捕捉光信号并转化为数字信号。 VFM系统...

    HTML5 拍照上传图片

    5. **绘制视频流**:定期调用`canvas`的`drawImage`方法,将视频帧绘制到画布上。 6. **转换为图片**:在用户触发拍照事件时,使用`canvas.toDataURL`将当前帧转换为图片URL。 7. **预览或上传**:可以将图片URL显示...

    HTML调用电脑摄像头

    HTML调用电脑摄像头是网页开发中的一个重要功能,它允许用户在浏览器中直接使用摄像头进行视频捕捉,例如用于视频聊天、照片拍摄或者人脸识别等应用。这一技术主要基于WebRTC(Web Real-Time Communication)标准,...

Global site tag (gtag.js) - Google Analytics