vue3获取视频时长、码率、格式等视频详细信息

本文主要是介绍vue3获取视频时长、码率、格式等视频详细信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

我们在上传视频需要视频的帧数等信息的时候,上传组件无法直接读取帧数等信息

方法:通过mediainfo.js来获取视频的帧率、总帧数和视频的总时长

mediainfo.js地址,想详细了解的可以去看看
git地址:https://github.com/buzz/mediainfo.js
预览地址:mediainfo.js

解决方案:

1、通过npm:

1.1、运行以下命令:

npm install mediainfo.js

官网没有关于vue的示例,但是有react+vite的示例,这里我是用vite配置

1.2、npm安装好插件后,在vite.config.ts 文件中配置下方代码
这里需要安装一个vite-plugin-static-copy 的vite插件

npm install vite-plugin-static-copy --save 

1.3、拷贝MediaInfoModule.wasm的静态文件,mediaInfo是需要依赖这个文件执行的

import * as path from 'path'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { viteStaticCopy } from 'vite-plugin-static-copy'export default defineConfig({plugins: [vue(),viteStaticCopy({targets: [{src: ''node_modules/mediainfo.js/dist/MediaInfoModule.wasm')',dest: 'dist',},],}),],
})

问题来了,在项目中我是用npm方式引入,运行提示MediaInfoModule.wasm文件找不到,添加的配置也没有效果,目前npm方式我没有配置成功,如果大家什么好的方法,还请指导一下,感谢

2、使用CDN的方式:

1、在项目index.html文件<body></body>标签下,通过CDN的方式加入mediaInfo.js,如下

<script src="https://unpkg.com/mediainfo.js@0.2.1/dist/umd/index.min.js"></script>

2、使用mediaInfo.js

 在需要获取视频信息的vue文件下使用,示例如下

<template><div class="container"><el-upload:on-change="handleVideoChange"accept="video/*"multiple ><el-button type="primary">上传视频</el-button></el-upload></div>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const handleVideoChange = (file)=>{
checkMediaFile(file.raw)
}const loadingVideo  = ref(null);const windows: any = window
const checkMediaFile = (file: any): Promise<any> => {loadingVideo.value = ElLoading.service({text:'读取中...'}); // 开始加载return new Promise((r, j) => {const getSize = () => file.sizeconst readChunk = (chunkSize, offset) =>new Promise((resolve, reject) => {const reader = new FileReader()reader.onload = (event: any) => {if (event.target.error) {reject(event.target.error)}resolve(new Uint8Array(event.target.result))}reader.readAsArrayBuffer(file.slice(offset, offset + chunkSize))})windows.MediaInfo().then((media) => {media.analyzeData(getSize, readChunk).then((result) => {console.log('视频信息:',result.media.track[1]);loadingVideo.value.close(); // 结束加载return result}).catch((error) => {j(error)})}).catch((error) => {j(error)})})
}
</script>

 3、运行效果如下:

这篇关于vue3获取视频时长、码率、格式等视频详细信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142154

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061