h5前端js如何将视频格式avi转为MP4格式
想使用video标签来支持avi格式视频的播放
h5前端js如何将视频格式avi转为MP4格式
想使用video标签来支持avi格式视频的播放
在纯前端实现视频格式转换存在较大技术限制,建议采用以下两种方案:
方案一:使用视频播放兼容方案(推荐)
<!-- 使用兼容性更好的视频播放方案 -->
<video controls>
<source src="video.mp4" type="video/mp4">
<source src="video.avi" type="video/x-msvideo">
您的浏览器不支持视频播放
</video>
<!-- 或者使用通用播放库 -->
<script src="https://cdn.jsdelivr.net/npm/video.js@7.8.4/dist/video.min.js"></script>
方案二:使用FFmpeg转码方案(需权衡性能)
// 使用FFmpeg.wasm(注意性能消耗)
import { FFmpeg } from '@ffmpeg/ffmpeg'
async function convertToMP4(aviFile) {
const ffmpeg = new FFmpeg()
await ffmpeg.load()
await ffmpeg.writeFile('input.avi', aviFile)
await ffmpeg.exec(['-i', 'input.avi', 'output.mp4'])
const data = await ffmpeg.readFile('output.mp4')
return new Blob([data], { type: 'video/mp4' })
}
// 注意:大文件转换会消耗大量内存和计算资源
重要说明:
前端转换方案存在以下局限:
建议:
如需强制格式转换,建议使用<input>的accept属性限制上传类型
<input type="file" accept="video/mp4">
10 回答11k 阅读
6 回答2.9k 阅读
5 回答4.7k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
建议你考虑其他方式o(╥﹏╥)o
Video标签不支持avi格式;当然是有一些转码的库或者工具,常用的FFmpeg,当时放在js端去转格式,先不考虑能不能转成功,把这种特别耗性能的任务放在前端就不合适,文件小有可能可以,文件大呢?另外,转格式后的视频质量能保证吗?
建议还是放在服务端转,或者用流媒体服务器,给前端推流,用一些通用的视频播放的js库播放