欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js截取video視頻某一幀做封面的簡單案例(附完整代碼)

 更新時間:2024年04月10日 10:40:53   作者:平淡才是真_6210  
最近碰到一個需求,要求獲取video視頻某一幀做封面圖片,這里給大家總結(jié)下,這篇文章主要給大家介紹了關(guān)于js截取video視頻某一幀做封面的簡單案例,需要的朋友可以參考下

可以使用 canvas元素來截取視頻某一幀并生成封面。

首先,在 video 標簽上設(shè)置視頻源地址和自動播放屬性:

<video src="video.mp4" autoplay></video>

然后,在 canvas 標簽上定義寬高和樣式,并通過 JavaScript 獲取視頻元素和 canvas 元素:

<canvas width="640" height="360" style="display:none;"></canvas>

<script>
  const video = document.querySelector('video');
  const canvas = document.querySelector('canvas');
  const ctx = canvas.getContext('2d');
</script>

接著,定義一個函數(shù)來截取視頻某一幀,并將其渲染到 canvas 上:

<script>
  function captureFrame() {
    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
  }
</script>

在需要生成封面的地方調(diào)用該函數(shù)即可:

<button onclick="captureFrame()">生成封面</button>

最后,將 canvas 元素轉(zhuǎn)換為圖片元素并插入到頁面中:

<script>
  function captureFrame() {
    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
    const dataURL = canvas.toDataURL();
    const img = document.createElement('img');
    img.src = dataURL;
    document.body.appendChild(img);
  }
</script>

完整代碼如下:

<video src="video.mp4" autoplay></video>
<canvas width="640" height="360" style="display:none;"></canvas>

<button onclick="captureFrame()">生成封面</button>

<script>
  const video = document.querySelector('video');
  const canvas = document.querySelector('canvas');
  const ctx = canvas.getContext('2d');

  function captureFrame() {
    ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
    const dataURL = canvas.toDataURL();
    const img = document.createElement('img');
    img.src = dataURL;
    document.body.appendChild(img);
  }
</script>

附:js截取視頻第一幀作為封面

在vue的v-for循環(huán)中,直接video標簽進行列表渲染時,滾動列表頁面會很卡,所以最好以img標簽渲染視頻封面圖,點擊后再播放視頻。

具體代碼如下:

//取視頻的第一幀作為封面
function cutPicture(item) {   //這里的item是列表的每一項
  let video = document.createElement("video");
  video.style = "position:fixed; top: 9999px;left:9999px;z-index:-9999";
  video.preload = "metadata";
  video.currentTime = 1; //截取的視頻第一秒作為圖片
  video.src = item.videoUrl;
  video.setAttribute("crossOrigin", "anonymous");
  video.width = 113;
  video.height = 75;
  document.body.appendChild(video);
  video.onloadeddata = function () {
    let canvas = document.createElement("canvas");
    canvas.width = 113;
    canvas.height = 75;
    canvas.getContext("2d").drawImage(video, 0, 0, video.clientWidth, video.clientHeight);
    var oGrayImg = canvas.toDataURL("image/jpeg");
    item.imgUrl = oGrayImg; //這里輸出的imgUrl就是視頻的封面圖
    this.remove();
  };
  return item;
}

總結(jié) 

到此這篇關(guān)于js截取video視頻某一幀做封面的文章就介紹到這了,更多相關(guān)js截取video視頻幀做封面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • transport.js和jquery沖突問題的解決方法

    transport.js和jquery沖突問題的解決方法

    這篇文章主要介紹了transport.js和jquery沖突問題的解決方法,需要的朋友可以參考下
    2015-02-02
  • 使用window.prompt()實現(xiàn)彈出用戶輸入的對話框

    使用window.prompt()實現(xiàn)彈出用戶輸入的對話框

    window對象的最后一種對話框是提示對話框,它顯示了預(yù)先設(shè)置的信息并提供文本域供用戶輸入應(yīng)答。它包括兩個按鈕,即Cancel和Ok,允許用戶用兩個相反的期望值來關(guān)閉這個對話框:取消整個操作或接收輸入到對話框中的文本
    2015-04-04
  • JavaScript聲明變量名的語法規(guī)則

    JavaScript聲明變量名的語法規(guī)則

    這篇文章主要給大家簡單介紹了JavaScript聲明變量名的語法規(guī)則,非常有助于大家學(xué)習(xí)javascript,有需要的小伙伴可以參考下。
    2015-07-07
  • js實現(xiàn)導(dǎo)航欄中英文切換效果

    js實現(xiàn)導(dǎo)航欄中英文切換效果

    本篇文章主要分享了javascript實現(xiàn)導(dǎo)航欄中英文切換效果的示例代碼,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 一文詳解preact的高性能狀態(tài)管理Signals

    一文詳解preact的高性能狀態(tài)管理Signals

    這篇文章主要介紹了一文詳解preact的高性能狀態(tài)管理Signals,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感興趣的朋友可以參考一下
    2022-09-09
  • ES6中Promise、async、await用法超詳細講解指南

    ES6中Promise、async、await用法超詳細講解指南

    async+await是ES6中引入的異步編程解決方案,旨在解決異步編程中的回調(diào)地獄問題,下面這篇文章主要給大家介紹了關(guān)于ES6中Promise、async、await用法超詳細講解的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • js canvas實現(xiàn)驗證碼并獲取驗證碼功能

    js canvas實現(xiàn)驗證碼并獲取驗證碼功能

    這篇文章主要為大家詳細介紹了js canvas實現(xiàn)驗證碼并獲取驗證碼功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • js限制輸入框只能輸入數(shù)字(onkeyup觸發(fā))

    js限制輸入框只能輸入數(shù)字(onkeyup觸發(fā))

    這篇文章主要介紹了通過js實現(xiàn)input輸入框只能輸入數(shù)字的實現(xiàn)方法,主要是通過正則表達式替換實現(xiàn),需要的朋友可以參考下
    2018-09-09
  • 在實例中重學(xué)JavaScript事件循環(huán)

    在實例中重學(xué)JavaScript事件循環(huán)

    這篇文章主要介紹了在實例中重學(xué)JavaScript事件循環(huán),幫助大家更好的理解和學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2020-12-12
  • 詳解webpack 最簡打包結(jié)果分析

    詳解webpack 最簡打包結(jié)果分析

    這篇文章主要介紹了詳解webpack 最簡打包結(jié)果分析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02

最新評論