最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

然后,在 canvas 標(biāo)簽上定義寬高和樣式,并通過(guò) 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>

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

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

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

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

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

<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標(biāo)簽進(jìn)行列表渲染時(shí),滾動(dòng)列表頁(yè)面會(huì)很卡,所以最好以img標(biāo)簽渲染視頻封面圖,點(diǎn)擊后再播放視頻。

具體代碼如下:

//取視頻的第一幀作為封面
function cutPicture(item) {   //這里的item是列表的每一項(xiàng)
  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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

海城市| 张家川| 苍南县| 临桂县| 若羌县| 黔江区| 湟中县| 奉化市| 河西区| 德令哈市| 平远县| 班玛县| 万宁市| 莱州市| 交口县| 和政县| 旬阳县| 怀集县| 桂东县| 自贡市| 佳木斯市| 页游| 连南| 汉中市| 仁布县| 石渠县| 曲阳县| 东安县| 南涧| 武汉市| 天镇县| 兖州市| 武宁县| 林芝县| 双城市| 新郑市| 集贤县| 井冈山市| 米泉市| 兴安盟| 淮北市|