uni-app Hbuildx 4.26打包后 运行uts ffmpeg插件 报错
uni-app Hbuildx 4.26打包后 运行uts ffmpeg插件 报错
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | Windows10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
HBuilderX类型:Alpha
HBuilderX版本号:4.26
手机系统:Android
手机系统版本号:Android 14
手机厂商:小米
手机机型:Redmi Note11R
页面类型:vue
vue版本:vue2
打包方式:云端
项目创建方式:HBuilderX
示例代码:
<template>
<view class="page">
<view @click="confirmMusicClip"> 裁剪</view>
</view>
</template>
<script>
const app = getApp();
// #ifdef APP-VUE
import {
executeFFmpeg
} from '@/uni_modules/sn-uts-ffmpeg'
// #endif
export default {
components: {
},
data() {
return {
fullSongFile: '',
clipSongOutputDir: '',
}
},
watch: {
},
computed:{
},
onLoad(options) {
this.downloadMusic()
},
onShow() {
},
onHide() {
},
onUnload() {
},
created() {
},
beforeDestroy() {
},
methods: {
downloadMusic(){
let mp3_file ="https://cdn.hunque.cn/storage/default/audio_files/34841fb3ba56b93315c3dd5df892cd51fa71d8e6.mp3"
let fileName = mp3_file.split('/').pop()
let that = this
uni.showLoading({
title: `正在加载`,
})
console.warn("downloadMusic",mp3_file,fileName)
uni.downloadFile({
url: `${mp3_file}`,
success(e) {
let {tempFilePath} = e
console.warn('tempFilePath',tempFilePath)
uni.hideLoading()
that.fullSongFile = tempFilePath
}
})
},
// 确认使用剪辑的音乐
confirmMusicClip(){
let that = this
let {
fullSongFile,
clipSongOutputDir,
} = this
let time = new Date()/1
let filePath = `${clipSongOutputDir}${time}.mp3`
let real_path = plus.io.convertLocalFileSystemURL(fullSongFile)
console.warn("confirmMusicClip",real_path,filePath)
uni.showLoading({
title: `正在剪裁`,
mask: true,
})
let filter = ``
let demoBeginTime = "00:10"
let demoEndTime = "00:15"
let cmd = `-i ${real_path} -ss ${demoBeginTime} -to ${demoEndTime} ${filter} -f mp3 -acodec copy ${filePath}`
console.warn("ffmpeg",cmd)
executeFFmpeg(cmd, res => {
let {state, returnCode} = res
console.warn("FFmpeg完成回调:",res);
}, res => {
//
console.log(`FFmpeg统计回调`,res)
}, res => {
console.log("开始任务回调:" ,res);
}, res => {
console.log("log回调:" ,res);
}, 6000)
// console.log('位置',fullSongFile, filePath)
// uni.hideLoading()
// return
console.warn("filePath",filePath)
uni.hideLoading()
return false;
},
}
}
</script>
<style>
.page{
width: 750rpx;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
</style>
操作步骤:
点击 示例中的 “裁剪”
预期结果:
uts ffmpeg插件 正常执行ffmpeg命令
实际结果:
运行报错Error in v-on handler (Promise/async): “Error: method not found:[uts.sdk.modules.snUtsFfmpeg.IndexKt-executeFFmpegByJs]”
在处理uni-app通过HBuilderX 4.26打包后运行uts ffmpeg插件报错的问题时,首先需要确认几个关键点:打包配置、插件兼容性、以及错误信息的具体内容。由于您没有提供具体的错误信息,我将基于常见的问题和解决方法,给出一些可能的代码和配置示例,帮助您定位和解决问题。
1. 确认uni-app项目配置
确保在manifest.json
中正确配置了原生插件。例如,如果您使用的是uts ffmpeg插件,您需要在manifest.json
的app-plus
-> distribute
-> plugins
中添加相应的插件配置:
{
"app-plus": {
"distribute": {
"plugins": {
"uts-ffmpeg": {
"version": "x.x.x", // 替换为实际的版本号
"provider": "xxx" // 替换为插件提供者ID
}
}
}
}
}
2. 检查原生代码集成
如果您在项目中直接使用了原生代码集成ffmpeg,确保在platforms/app-plus/nativeplugins
目录下正确放置了uts ffmpeg的原生代码,并在main.js
或App.vue
中正确初始化了插件。
// main.js 或 App.vue 中
if (window.__plus__) {
const utsFFmpeg = plus.runtime.getPluginManager().getPlugin('uts-ffmpeg');
utsFFmpeg.init({
// 初始化参数
}, (err, res) => {
if (err) {
console.error('FFmpeg 初始化失败', err);
} else {
console.log('FFmpeg 初始化成功', res);
}
});
}
3. 错误处理和日志
由于您提到打包后运行报错,建议在代码中添加详细的错误处理和日志记录,以便定位问题:
try {
// 调用ffmpeg相关功能的代码
} catch (error) {
console.error('调用FFmpeg时发生错误', error);
// 可以将错误信息发送到服务器进行进一步分析
}
4. 检查环境兼容性
确保您的开发环境和打包环境(如Node.js版本、HBuilderX版本、uni-app版本等)与uts ffmpeg插件的要求相匹配。
5. 查阅官方文档和社区
如果以上步骤仍未解决问题,建议查阅uts ffmpeg插件的官方文档和uni-app社区,看看是否有其他开发者遇到并解决了类似的问题。
由于无法直接看到您的错误信息和项目结构,以上内容仅为一些通用的建议和示例代码。希望这些能帮助您找到并解决问题。如果问题依旧,请提供具体的错误信息以便进一步分析。