uni-app Hbuildx 4.26打包后 运行uts ffmpeg插件 报错

发布于 1周前 作者 caililin 来自 Uni-App

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]”


1 回复

在处理uni-app通过HBuilderX 4.26打包后运行uts ffmpeg插件报错的问题时,首先需要确认几个关键点:打包配置、插件兼容性、以及错误信息的具体内容。由于您没有提供具体的错误信息,我将基于常见的问题和解决方法,给出一些可能的代码和配置示例,帮助您定位和解决问题。

1. 确认uni-app项目配置

确保在manifest.json中正确配置了原生插件。例如,如果您使用的是uts ffmpeg插件,您需要在manifest.jsonapp-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.jsApp.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社区,看看是否有其他开发者遇到并解决了类似的问题。

由于无法直接看到您的错误信息和项目结构,以上内容仅为一些通用的建议和示例代码。希望这些能帮助您找到并解决问题。如果问题依旧,请提供具体的错误信息以便进一步分析。

回到顶部