Cordova应用大视频上传慢求有效视频压缩插件
解决Cordova大视频上传前的压缩问题
我之前做Cordova项目时也碰到过大视频上传耗时太长的痛点,给你分享几个亲测能用的视频压缩插件,顺便帮你排查下之前插件失效的可能原因:
推荐的Cordova视频压缩插件
1. cordova-plugin-video-compress
这个是专门针对视频压缩的轻量插件,支持iOS和Android,用法简单,压缩速度也不错。
- 安装命令:
cordova plugin add cordova-plugin-video-compress - 基础用法示例:
document.addEventListener("deviceready", function() { const inputPath = "/storage/emulated/0/DCIM/Camera/video.mp4"; // 原视频路径 const outputPath = "/storage/emulated/0/Compressed/video_compressed.mp4"; // 压缩后路径 window.VideoCompress.compressVideo( inputPath, outputPath, function(result) { console.log("压缩完成,路径:", result.path); // 这里可以调用你的AJAX上传逻辑 }, function(error) { console.error("压缩失败:", error); }, { quality: 50, // 压缩质量(0-100) width: 1280, // 目标分辨率宽度 height: 720 // 目标分辨率高度 } ); }, false);
2. cordova-plugin-media-compressor
这个插件支持视频和图片的压缩,功能更全面,还能自定义比特率、帧率等参数,适配性更强。
- 安装命令:
cordova plugin add cordova-plugin-media-compressor - 视频压缩示例:
document.addEventListener("deviceready", function() { const compressor = window.MediaCompressor; const options = { sourceUri: inputPath, destinationUri: outputPath, videoBitrate: 500000, // 视频比特率(单位:bps) videoFrameRate: 24, // 帧率 videoWidth: 1280, videoHeight: 720 }; compressor.compress(options) .then(result => { console.log("压缩成功:", result.destinationUri); }) .catch(error => { console.error("压缩出错:", error); }); }, false);
3. cordova-plugin-ffmpeg(进阶选择)
如果你需要更精细化的压缩控制,可以用这个集成FFmpeg的插件,能通过FFmpeg命令实现各种复杂的视频处理,但需要你对FFmpeg命令有一定了解。
- 安装命令:
cordova plugin add cordova-plugin-ffmpeg - 压缩示例(调整分辨率和比特率):
document.addEventListener("deviceready", function() { const ffmpegCommand = `-i ${inputPath} -s 1280x720 -b:v 500k ${outputPath}`; window.cordova.plugins.ffmpeg.execute( ffmpegCommand, function() { console.log("FFmpeg压缩完成"); }, function(error) { console.error("FFmpeg执行失败:", error); } ); }, false);
排查之前插件失效的可能原因
你之前用的插件没生效,不妨检查这几点:
- 确认插件是否正确安装:执行
cordova plugin list查看插件是否在列表中,若没有重新安装 - 确保在
deviceready事件触发后再调用插件方法,Cordova插件必须在设备就绪后才能使用 - 检查权限:Android需要
WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE权限,iOS需要相册访问权限,确认配置文件里已添加 - 平台兼容性:有些插件对特定系统版本有要求,比如iOS 13+或Android 6+,确认你的测试设备系统版本符合要求
内容的提问来源于stack exchange,提问作者Prashant
相关产品推荐
相关产品推荐

