国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

uni-app App和H5平臺(tái)上傳視頻截取視頻第一幀生成圖片

這篇具有很好參考價(jià)值的文章主要介紹了uni-app App和H5平臺(tái)上傳視頻截取視頻第一幀生成圖片。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

uni-app App和H5平臺(tái)使用renderjs上傳視頻截取視頻第一幀生成圖片

提示:因?yàn)閡ni-app中renderjs僅支持App和H5平臺(tái),所以該方案僅支持當(dāng)前這兩個(gè)平臺(tái)。 this.request為本人封裝的接口請(qǐng)求方法,可以替換成個(gè)人的接口請(qǐng)求方法,如有需要可在下方留言



前言

因?yàn)閡ni-app App端沒有dom概念,不支持dom操作,并且uni-app的canvas不支持繪制video。renderjs完美解決了uni-app App端的基礎(chǔ)dom操作。實(shí)現(xiàn)效果在最下方?。?/p>


一、renderjs簡介

renderjs是一個(gè)運(yùn)行在視圖層的js。它比[WXS](https://uniapp.dcloud.io/tutorial/miniprogram-subject.html#wxs)更加強(qiáng)大。它只支持app-vue和h5。

renderjs的主要作用有2個(gè):

  • 大幅降低邏輯層和視圖層的通訊損耗,提供高性能視圖交互能力
  • 在視圖層操作dom,運(yùn)行for web的js庫

二、創(chuàng)建index.vue文件,下方代碼均在index.vue中

1.HTML代碼

代碼如下(示例):

<template>
	<view class="content">
		// 邏輯層調(diào)用視圖層方法,采用監(jiān)聽data中變量改變的方法
		<view id="canvas" class="canvas" :prop="newVal" :change:prop="canvas.create"></view>
		<button @click="choose">chooseVideo</button>
	</view>
</template>

2.邏輯層代碼

代碼如下(示例):

<!-- 邏輯層script -->
<script>
	export default {
		data() {
			return {
				newVal: null
			};
		},
		methods: {
			choose(){
				// 選取視頻文件,拿到本地地址
				uni.chooseVideo({
					sourceType: ['camera', 'album'],
					success:  (blod)=>{
						// 獲取視頻信息,拿到寬高信息
						uni.getVideoInfo({
							src: blod.tempFilePath,
							success: (info) => {
								// 上傳視頻到網(wǎng)絡(luò)地址,當(dāng)然也可以使用本地地址。App、H5平臺(tái)本人都測(cè)試過,都沒問題!!!
								uni.uploadFile({
									url: 'http://替換成自己個(gè)上傳文件接口/api/common/upload', //僅為示例,非真實(shí)的接口地址
									filePath: blod.tempFilePath,
									name: 'file',
									formData: {
										'token': uni.getStorageSync('userInfo').token
									},
									success: src => {
										// fullurl也可以使用本地地址,上傳選擇文件獲取到的 => blod.tempFilePath
										this.newVal = {fullurl: JSON.parse(src.data).data.fullurl, width: info.width, height: info.height}
										// 這里當(dāng)時(shí)想做個(gè)平臺(tái)區(qū)分,但是后面發(fā)現(xiàn)H5平臺(tái)這種調(diào)用方式,視圖層create接受參數(shù)的時(shí)候,只能接收到newValue,但是不能接收到event, ownerInstance,所以還是統(tǒng)一使用上方操作
										// 下方方法僅展示,調(diào)用還是統(tǒng)一使用上方操作
										// // #ifdef APP-PLUS
										// this.newVal = {fullurl: JSON.parse(src.data).data.fullurl, width: info.width, height: info.height}
										// // #endif
										// // #ifdef H5
										// this.create({fullurl: JSON.parse(src.data).data.fullurl, width: info.width, height: info.height})
										// // #endif
									},
									complete: all => {
										console.log(JSON.parse(all.data))
									}
								})
							}
						})
					}
				})
			},
			// 邏輯層拿到base64字符串,上傳網(wǎng)絡(luò)圖片
			getBase64(options){
				this.request({
					url: 'common/base64', //僅為示例,非真實(shí)的接口地址
					data: {
						base64: options.base64
					}
				}).then(res=>{
					// 拿到上傳base64圖片的網(wǎng)絡(luò)圖片
					console.log(res)
				})
			},
		}
	}
</script>

3.視圖層代碼

代碼如下(示例):

<!-- 視圖層script module對(duì)應(yīng)HTML代碼中view的id-->
<script module="canvas" lang="renderjs">
	export default {
		methods: {
			// 視圖層創(chuàng)建base64圖片
			create(newValue, oldValue, ownerInstance){
				// 第一次進(jìn)入為空不操作
				if(newValue == null){
					return
				}
				// 在緩存中創(chuàng)建video標(biāo)簽
				var video = document.createElement("VIDEO")
				// 通過setAttribute給video dom元素添加自動(dòng)播放的屬性,因?yàn)橐曨l播放才能獲取封面圖    
				// 設(shè)置video自動(dòng)播放屬性
				video.autoplay = true
				// 該設(shè)置方法無效
				// video.setAttribute('autoplay', true)
				// 再添加一個(gè)靜音的屬性,否則自動(dòng)播放會(huì)有聲音
				// 該設(shè)置方法無效
				// video.setAttribute('muted', true)
				video.muted = true
				// 如果報(bào)錯(cuò)Uncaught SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported.
				// 可以把下面兩行代碼加上,因?yàn)槲矣玫木€上video url,所以可能拋出了異常。大概意思就是跨域了toDataURL()使用了外域資源
				video.setAttribute('crossOrigin', 'anonymous')
				video.crossOrigin = '*'
				// 上面我們只是創(chuàng)建了video標(biāo)簽,視頻播放需要內(nèi)部的source的標(biāo)簽,scr為播放源
				video.innerHTML = '<source src=' + newValue.fullurl + ' type="audio/mp4">'
				// 再創(chuàng)建canvas畫布標(biāo)簽
				var canvas = document.createElement('canvas');
				var ctx = canvas.getContext('2d');
				// video注冊(cè)canplay自動(dòng)播放事件
				// 防止video不播放,所以手動(dòng)加個(gè)播放操作
				video.play()
				// video播放事件
				video.addEventListener('canplay', ()=>{
					// 創(chuàng)建畫布的寬高屬性節(jié)點(diǎn),就是圖片的大小,單位PX
					var anw = document.createAttribute("width");
					anw.nodeValue = newValue.width;
					var anh = document.createAttribute("height");
					anh.nodeValue = newValue.height;
					canvas.setAttributeNode(anw);
					canvas.setAttributeNode(anh);
					// 畫布渲染
					ctx.drawImage(video, 0, 0, newValue.width, newValue.height);
					// 生成base64圖片,指定type為jpeg格式生成的圖片base64編碼會(huì)小很多
					var base64 = canvas.toDataURL('image/jpeg') // 這就是封面圖片的base64編碼
					// 傳遞數(shù)據(jù)給邏輯層
					ownerInstance.callMethod('getBase64',{
						base64: base64
					})
					// 刪除創(chuàng)建的video 、canvas dom,要不然重新選取視頻生成圖片不生效
					// ps:開始有這個(gè)問題,但是后面不知道為什么又沒有了,如果發(fā)現(xiàn)生成第一次base64之后再選擇不生效,可以嘗試一下把下方注釋打開
					// document.body.removeChild(video)
					// document.body.removeChild(canvas)
				})
			}
		}
	}
</script>

提示:本文由本人原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處!!! 如果本文對(duì)你有幫助,請(qǐng)點(diǎn)個(gè)贊吧!

實(shí)現(xiàn)效果

1.base64圖片效果

uni-app App和H5平臺(tái)上傳視頻截取視頻第一幀生成圖片

2.線上圖片效果

uni-app App和H5平臺(tái)上傳視頻截取視頻第一幀生成圖片
uni-app App和H5平臺(tái)上傳視頻截取視頻第一幀生成圖片文章來源地址http://www.zghlxwxcb.cn/news/detail-407771.html

到了這里,關(guān)于uni-app App和H5平臺(tái)上傳視頻截取視頻第一幀生成圖片的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uni-app uni-file-picker文件上傳實(shí)現(xiàn)拍攝從相冊(cè)選擇獲取圖片上傳文檔服務(wù)器(H5上傳-微信小程序上傳)

    uni-app uni-file-picker文件上傳實(shí)現(xiàn)拍攝從相冊(cè)選擇獲取圖片上傳文檔服務(wù)器(H5上傳-微信小程序上傳)

    前言 最近在使用uni-app寫H5移動(dòng)端,有一個(gè)從手機(jī)拍攝從相冊(cè)選擇獲取圖片上傳到文檔服務(wù)器功能。 查閱uni-app發(fā)現(xiàn)關(guān)于上傳圖片,uni-file-picker文件上傳,uni.chooseImage,uni.uploadFile H5上傳時(shí)它和pc端原理差不多,都是file對(duì)象上傳,PC端是通過new file對(duì)象,uni-app是直接提供了 微信

    2024年02月15日
    瀏覽(95)
  • uni-app引入??低昲5player實(shí)現(xiàn)視頻監(jiān)控的播放

    uni-app引入??低昲5player實(shí)現(xiàn)視頻監(jiān)控的播放

    知識(shí)儲(chǔ)備 uni-app web-view組件相關(guān)知識(shí):點(diǎn)擊學(xué)習(xí)。 ??低曄嚓P(guān)工具下載:點(diǎn)擊跳轉(zhuǎn)下載。 web-view組件不全屏顯示:uni-app web-view 如果設(shè)置不全屏 不自動(dòng)鋪滿。 工具下載 首先下載海康威視h5player的demo 在uni-app項(xiàng)目中static文件夾下創(chuàng)建文件目錄,我命名為h5player 將demo中bin文件

    2024年02月02日
    瀏覽(104)
  • 【Uni-app 引入??礹5player并接入ws視頻流】

    【Uni-app 引入??礹5player并接入ws視頻流】

    內(nèi)容簡介 采用uni-app中的renderjs 引入??礖5 SDK 后端接入??稻C合安防平臺(tái)的開放API獲取預(yù)覽流 ??礖5 SDK 下載地址 接入原因 因在移動(dòng)端接入不管是hls flv rtsp rtmp流的播放穩(wěn)定性和速度均很慢,特采用ws直連流來播放,效率很穩(wěn)定性均顯著提高。因采用前者流可以直接使用原生

    2024年02月11日
    瀏覽(15)
  • 不同平臺(tái)使用不同技術(shù)實(shí)現(xiàn)微信好友、朋友圈分享匯總(H5、taro、uni-app)

    不同平臺(tái)使用不同技術(shù)實(shí)現(xiàn)微信好友、朋友圈分享匯總(H5、taro、uni-app)

    人生路漫漫,坑,是活久了見。程序猿世界里各種奇葩的需求都有,隨之而來的各種坑也是層出不窮。 應(yīng)前IBM同事邀請(qǐng)?zhí)貋碜龇窒淼膶n}總結(jié)。一般人我不告訴他,刷到的朋友們就賺到了,你懂的~~~~~~收藏吧! ??事情前情概述,昨天IBM的同事前來咨詢我怎樣實(shí)現(xiàn)微信分享功

    2024年02月15日
    瀏覽(92)
  • uni-app移動(dòng)端-H5-微信小程序下載保存圖片,文檔和視頻到手機(jī),帶進(jìn)度條

    可移步插件地址,可直接導(dǎo)入hbuilderx示例項(xiàng)目查看: uni-app移動(dòng)端-H5-微信小程序下載保存圖片,文檔和視頻到手機(jī),帶進(jìn)度條 具體代碼如下

    2024年02月13日
    瀏覽(27)
  • uni-app - App 平臺(tái)內(nèi)嵌網(wǎng)頁物理手機(jī)自帶返回鍵失效解決方案(內(nèi)嵌的 webview 網(wǎng)頁 H5 打包后手機(jī)物理返回鍵無效直接退出應(yīng)用了)

    uni-app - App 平臺(tái)內(nèi)嵌網(wǎng)頁物理手機(jī)自帶返回鍵失效解決方案(內(nèi)嵌的 webview 網(wǎng)頁 H5 打包后手機(jī)物理返回鍵無效直接退出應(yīng)用了)

    當(dāng)您需要打包 App(*.apk) 平臺(tái)時(shí),發(fā)現(xiàn)內(nèi)嵌的 H5 頁面雖然可以正常顯示與運(yùn)行,但是手機(jī)的物理返回鍵卻無法使用,當(dāng)點(diǎn)擊手機(jī)物理返回按鍵(或手勢(shì))時(shí),直接顯示 “再按一次退出應(yīng)用”,而 并非返回上一個(gè)\\\"網(wǎng)頁\\\"。 出現(xiàn)這種情況的原因是, 內(nèi)嵌的網(wǎng)頁與您的 App “毫無

    2024年02月09日
    瀏覽(110)
  • 跨平臺(tái)應(yīng)用開發(fā)進(jìn)階(五十)uni-app ios web-view嵌套H5項(xiàng)目白屏問題分析及解決

    跨平臺(tái)應(yīng)用開發(fā)進(jìn)階(五十)uni-app ios web-view嵌套H5項(xiàng)目白屏問題分析及解決

    應(yīng)用 uni-app 框架開發(fā)好APP上架使用過程中,發(fā)現(xiàn)應(yīng)用經(jīng)過長時(shí)間由后臺(tái)切換至前臺(tái)時(shí),通過 webview 方式嵌套的H5頁面發(fā)生白屏現(xiàn)象。 任何手機(jī)設(shè)備上,當(dāng)手機(jī)內(nèi)存不足時(shí),os都會(huì)回收資源。一般是先回收后臺(tái)打開的資源。如果當(dāng)前應(yīng)用占用的資源過高,當(dāng)前應(yīng)用也有可能崩潰

    2024年02月14日
    瀏覽(24)
  • uni-app打開外部鏈接方式匯總(h5&app)

    問題描述 在應(yīng)用中打開一個(gè)外部的html頁面,即完整http鏈接的頁面。h5通過window.open或是內(nèi)嵌iframe基本都沒有問題,本文主要針對(duì)app端的方法進(jìn)行匯總,不涉及到小程序端。 方案1 使用uni-app的擴(kuò)展組件 uni-link ,使用參考文檔uni-app官網(wǎng) 該組件的行為是在app內(nèi)打開外部瀏覽器,

    2024年02月01日
    瀏覽(21)
  • uni-app搭建h5項(xiàng)目

    uni-app搭建h5項(xiàng)目

    一、 打開官方網(wǎng)站 https://uniapp.dcloud.net.cn/quickstart-cli.html 二、找到使用vue-cli命令行,按照文檔上的步驟進(jìn)行搭建 全局安裝 vue-cli 搭建項(xiàng)目 可以根據(jù)命令行搭建,搭建vue2.0對(duì)應(yīng)的是webpack, 也可以搭建vue3.0+vite,命令行下載不下來,直接訪問高亮起來的 gitee 然后下載模板即可

    2024年02月22日
    瀏覽(86)
  • uni-app如何區(qū)分 app、h5、小程序代碼; uni-app如何判斷是android、ios、小程序

    uni-app如何區(qū)分 app、h5、小程序代碼; uni-app如何判斷是android、ios、小程序

    uniapp是DCloud公司于2012年開始研發(fā)的能夠一次代碼開發(fā),生成H5、小程序(微信、支付寶、百度、華為等)、APP等應(yīng)用的技術(shù)的統(tǒng)稱,開發(fā)工具是HBuilderX,功能非常強(qiáng)大,由此引申出許多技術(shù)社區(qū)與生態(tài)環(huán)境。 使用HBuilderX開發(fā)Uniapp程序的項(xiàng)目,用它生成多端應(yīng)用,由于兼容各種

    2024年02月11日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包