文章目录
创建方法
使用
1. duration(时长)
2. width(宽度)和 height(高度)
3. bitrate(码率)
4. resolution(分辨率)
创建方法
// utils/videoInfo.js
export function getVideoInfo(file) {
return new Promise((resolve, reject) => {
const video = document.createElement('video')
// 处理元数据加载完成
video.onloadedmetadata = () => {
// 立即释放对象 URL
URL.revokeObjectURL(video.src)
// 计算码率(bps)
const fileSizeInBits = file.size * 8 // 将字节转换为比特
const bitrate = fileSizeInBits / video.duration
resolve({
duration: video.duration,
width: video.videoWidth,
height: video.videoHeight,
bitrate: Math.round(bitrate), // 四舍五入到整数
resolution: `${video.videoWidth}x${video.videoHeight}`
})
}
// 处理加载错误
video.onerror = (error) => {
URL.revokeObjectURL(video.src)
reject(new Error('无法加载视频元数据'))
}
// 设置视频源
video.preload = 'metadata'
video.src = URL.createObjectURL(file)
})
}
使用
import { getVideoInfo } from '@/utils/videoInfo'
const handleFileUpload = async (event) => {
const file = event.target.files[0]
if (!file) return
try {
const videoInfo = await getVideoInfo(file)
console.log('视频信息:', {
...videoInfo,
// 格式化的显示信息
formattedDuration: `${Math.floor(videoInfo.duration / 60)}分${Math.floor(videoInfo.duration % 60)}秒`,
formattedBitrate: `${(videoInfo.bitrate / 1000).toFixed(2)} kbps`
})
} catch (error) {
console.error('获取视频信息失败:', error)
// 这里可以添加错误处理逻辑
}
}
1. duration(时长)
含义:视频的总播放时长,单位是秒
示例值:185.56(表示3分5秒的视频)
用途:
显示视频总长度
计算进度条
限制上传视频的最大时长
2. width(宽度)和 height(高度)
含义:
width:视频的原始宽度(像素)
height:视频的原始高度(像素)
用途:
判断视频分辨率
视频播放前的占位图尺寸
转码时确定目标分辨率
响应式布局时计算宽高比
3. bitrate(码率)
含义:视频的数据传输速率,单位是比特/秒(bps)
示例值:2500000(表示2.5Mbps)
用途:
评估视频质量(码率越高通常质量越好)
计算带宽需求
转码时设置目标码率
4. resolution(分辨率)
含义:将宽高组合成标准分辨率字符串
示例值:"1920x1080"(表示全高清)
常见分辨率标准:
720p:1280x720
1080p:1920x1080
4K:3840x2160
用途:
直观显示视频规格
分类存储不同分辨率的视频
用户界面展