1. 程式人生 > >node.js 實現html5視訊播放截圖

node.js 實現html5視訊播放截圖

最近在做一個視訊會議專案相關的預研,要實現桌面端的視訊播放和截圖等。
所有的js , html5 , css,electron 的技術對我來說都是全新的技術點,所以在開始前請先了解這些基本的語法和框架。

考慮到前期的投入時間短,技術點多,所以實現選擇的是一個做桌面應用的的框架Electron。不打算部署B/S架構。直接在前端中用html5的video來實現,很簡單,後期再考慮用Ext.js等框架來做。

先簡單實現:
html:

         <div id="video_area">
             <!--video的樣式可以自定義 -->
            <link
rel="stylesheet" type="text/css" href="../../css/video.css" />
<video id="video" autoplay="autoplay" style="width:100%;height:100%"> <!--本地測試一個視訊,可以改為其他網路地址,但是直接的rtsp的源是不支援的,需要轉換,這個後面在研究通過ffmpeg怎麼轉換之類的。--> <source src="./test.mp4" type='video/mp4'/>
你不支援這個視訊播放! </video> </div> <div id="foot"> <link rel="stylesheet" type="text/css" href="../../css/function.css" /> <button id="home_btn" onclick="return Exit_function()" style="margin-top:5px;margin-left:15px;border-radius:20px;height:50px;width:12%;"
>
主介面</button> <button id="record_btn" onclick="return start()" style="height:50px;width:16%;;font-size:15px ">錄影</button> <button id="shoot_btn" onclick="return shoot()" style="height:50px;width:16%;;font-size:15px ">截圖</button> <button id="dial_btn" onclick="show_hide()" style="height:50px;width:16%;;font-size:15px ">撥號盤</button> <button id="address_book_btn" onclick="" style="height:50px;width:16%;;font-size:15px ">通訊錄</button> <button id="back_btn" onclick="return Exit_function()" style="margin-top:5px;margin-right:15px;float:right;border-radius: 20px;height:50px;width:12%;">返回</button> </div>

截圖按鍵繫結shoot函式,通過js中的shoot來實現圖片儲存到本地。

> /*視訊截圖 */ shoot = function() {
>     var player = document.getElementById("video");
>     var canvas = document.createElement("canvas");
>     canvas.width = 500;
>     canvas.height = 400;
>     canvas.getContext('2d').drawImage(player, 0, 0, canvas.width, canvas.height);
>     var img = document.createElement("img");
>     img.src = canvas.toDataURL('image/png');
> 
>     console.log(img.src);
>     console.log("shoot cut one!");
> 
>     //檔名
>     var filename = 'image_' + (new Date()).getTime() + '.' + 'png';
> 
>     //去掉字首資訊的圖片內容
>     var base64Data = img.src.replace(/^data:image\/\w+;base64,/, "");
> 
>     var pictureBuff = new Buffer(base64Data, 'base64');
> 
>     //判斷目錄是否存在,不存在則建立
>     fs.exists(__dirname, function(exists) {
>         var ret = exists ? ret = '資料夾存在' : '資料夾不存在';
>         console.log(ret);
>         if (exists) {
> 
>         } else {
>             fs.mkdir(__dirname + m_dir, function(err) {
>                 if (err) {
>                     console.log("建立目錄失敗!");
>                 } else {
>                     console.log("建立目錄成功!");
>                 }
>             });
>         }
>     });
> 
>     //將圖片資料寫入檔案
>     fs.writeFile(path.join(__dirname, filename), pictureBuff, function(err) {
>         if (err) {
>             console.log("儲存失敗");
>             alert("儲存失敗");
>         } else {
>             console.log("儲存成功!");
>             alert("截圖" + filename + "儲存成功!");
>         }
>     }); }

後期可以修改把目錄設定為配置檔案中讀取。
當前是HTML中讀取本地的視訊資源,通過按鍵截圖,並把截圖繪製到canvas上,並輸出到檔案。最終儲存。

相關推薦

node.js 實現html5視訊播放

最近在做一個視訊會議專案相關的預研,要實現桌面端的視訊播放和截圖等。 所有的js , html5 , css,electron 的技術對我來說都是全新的技術點,所以在開始前請先了解這些基本的語法和框架。 考慮到前期的投入時間短,技術點多,所以實現選擇的是一個

自己動手實現html5視訊播放器倍數播放功能

自己動手實現html5視訊播放器倍數播放功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>阿酷TONY--Tangni&

android視訊播放並製作成gif圖片

    導言:    根據文章標題,按三步走,一、視訊播放;二、連續截圖;三、轉換成gif。視訊播放很自然想到用MediaPlayer或者VideoView,但我在這裡踩了幾個坑,寫在這裡也希望別人少走點彎路。首先,是MediaPlayer+SurfaceView的坑,如果只

js實現視訊,視訊批量,canvas實現

## 擷取視訊的某一時間的影象並儲存 利用canvas的繪畫能力畫出視訊某一幀的視訊畫面, 獲得到影象之後轉換成base64影象, 再利用a標籤的實現自動儲存到本地 * html程式碼 ``` html 開始截圖 去下載 ```

html5 websocket + node.js 實現網頁聊天室

1 client:    socket.io    server:   node.js +  express  + socket.io   一個簡單的聊天室  demo,沒有註冊,內建了一些測試使用者

HTML5呼叫攝像頭+視訊特效+錄製視訊+錄音++變聲+濾波+音訊視覺化

1.寫在前面 根據最近的學習,寫了一個demo, 可以通過navigator.mediaDevices.getUserMedia()方法呼叫電腦攝像頭,並實現了錄製音訊,錄製視訊,對攝像頭的內容進行截圖下載;通過AudioContext使用web audio

如何使用html5 canvas畫布對本地視訊進行並上傳至伺服器

前端程式碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

jsp html5 video實現線上視訊播放原始碼,支援IE6,7,8,10,11,谷歌,火狐等瀏覽器

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getSche

Android視訊部分功能實現

最近想用將android視訊接收app上加上螢幕截圖功能,直接在網上查詢截圖程式碼,發現結出來的圖不對勁,視訊視窗變成黑色的了,沒有截圖成功。而且網上大多數的方法都是利用view套件裡的getDrawingCache()函式。我繼續在網上查詢答案,發現有人這樣解

[js高手之路]Node.js實現簡易的爬蟲-抓取博客所有文章列表信息

r.js 目錄 ref 抓取 {} attr 視頻 json clist 抓取目標:就是我自己的博客:http://www.cnblogs.com/ghostwu/ 需要實現的功能: 抓取博客所有的文章標題,超鏈接,文章摘要,發布時間 需要用到的庫: node.js自帶的h

視頻播放及簡要文字介紹——Thunder團隊

es2017 本地 我愛你 wid height 個人 字體大小 各類 str 視頻播放截圖及簡要文字介紹 圖一:團隊Logo ——從此我們有了自己的標誌 圖二:掃描本地書籍 ——可閱讀本地的喜愛書籍 圖三:在本地添加自己喜愛的圖書 ——將自己喜愛的書籍加入書架

node.js實現圖片上傳(包含縮略圖)

http close path return new tde log img thumb 圖片上傳 使用multiparty插件實現上傳 安裝multiparty npm i --save multiparty 代碼實現 const multiparty = requi

js 利用canvas + flv.js實現 視頻流 屏 、本地下載功能實現,兼容火狐,谷歌, 屏跨域的坑

font 方案 function can 屬性和方法 load() com DG ren 1 本地視頻截屏(canvsa)    <!DOCTYPE html> <html> <head> <meta charset=

Four-operations: 使用node.js實現四則運算程序

任務 stand 設計 soft war 文檔 代碼規範 node 項目 一. 項目基本信息 項目成員: 陳旭欽, 郭鵬燕 項目倉庫: https://github.com/Yanzery/Four-operations 二. PSP2.1表格 PSP2.1 Pers

node——8-node.js 實現 apache 功能

初步實現 apache 功能 var http = require('http'); var fs = require('fs'); // 任意目錄地址 var wwwDir = 'E:/desk/my-pro/QD-practice/node/2/www'; // 1. 建立

phantomjs實現免費線上網頁工具-toolfk程式設計師線上工具網

     本文要推薦的[ToolFk]是一款程式設計師經常使用的線上免費測試工具箱,ToolFk 特色是專注於程式設計師日常的開發工具,不用安裝任何軟體,只要把內容貼上按一個執行按鈕,就能獲取到想要的內容結果。ToolFk還支援  BarCode

微信小程式推廣二維碼海報Node.js實現

引言 最近公司的微信小程式專案由於業務需求需要實現二維碼推廣海報,而小程式的服務端程式碼是用node.js實現的,由於是第一次使用node.js作為服務端來實現圖片的相關處理,不免走了一些坑。所以為了避免大家也像我一樣花費不必要的時間爬坑,就將我再開發過程中遇到的一些過程記錄下來,供大家參考,水平有限,請相

node.js實現傳送郵件功能

準備事項 QQ郵箱設定:進入QQ郵箱->設定->賬戶->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務->開啟POP3/SMTP服務,並複製pass祕鑰 安裝nodemailer :npm install nodem

Node.js實現對mysql資料庫的crud時報加密方式錯誤解決方案

本人在學習全棧開發過程中做一個Node的web專案在連線本地MySQL8.0版本的資料庫時,發現Navicat連線不上,它報了一個數據庫的加密方式導致連線不上的錯誤,錯誤如下: MySQL8.0版本的加密方式和MySQL5.0的不一樣,連線會報錯。 解決方法如下: 開啟mysql的命令列進入

Node.js實現支付寶H5支付

1、      建立支付應用 1.1、根據需要選擇介面型別,這裡選擇支付應用。   1.2、選擇使用環境   1.3、簽約當面付(線下支付) 2、      使用alipay-sdk 2.1、 引入服務端SDK模組 npm i alipay-sdk 2.2、 配置app資訊 var AlipaySdk