更新记录
1.1(2021-09-09)
新增日志回调,已经取消执行指令
1.0.2(2021-09-07)
更新ios原生端的功能实现
平台兼容性
Android | iOS |
---|---|
× | 适用版本区间:10 - 14 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios
注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择
使用说明
特别提醒 这个FFmpeg 跟uniapp官方提供的视频播放组件有冲突 因为官方视频播放器是用的ijk播放器 里面本身存在ffmpeg库 如果同时使用 会导致我这个插件的指令一些基本指令都会失效
ios
可供调用 方法列表
/**
* 手动结束某个指令 会有完成回调
* @param executionId 指令ID
*/
func cancelCmd(executionId);
/**
* 设置ffmpeg整体全局的 打点数据回调以及log回调
* @param staticCallBack 执行中 打点数据的回调 如果是一些耗时操作可能有关键的信息 结合日志信息可以用做进度之类的操作
* 打点数据结构 {
* executionId:当前数据关联的 执行id
* videoFrameNumber:视频相关信息
* videoFps:视频相关信息
* videoQuality:视频相关信息
* size;:视频相关信息
* time:视频相关信息
* bitrate:视频相关信息
* speed:视频相关信息
* }
* @param logCallBack 执行中 log日志 结合打点回调可以做进度之类的
* logo数据结构 {
* executionId:当前数据关联的 执行id
* level:log等级
* message:具体log详情
* }
*
*/
func setStaticCallBack(()=>{//打点数据回调},()=>{//日志数据回调});
/**
* 异步方法
*
* @param options 执行的指令 示例 {"cmd":"具体指令"} 注意指令不要有 "ffmpeg "开头 直接输入指令 比如 "-version"
* @param repareCallBack 准备开始执行指令后的回调 会返回当前这个指令的执行 id 后续可以通过 cancel方法进行取消执行
* @param completCallback 完成执行的回调 返回 结果代码
* 返回结果数据结构 {
* code:1.成功 0.失败
* message:错误信息
* }
*/
func runCmdCodeAsyncFunc({执行指令的map 必须包含key "cmd"},()=>{//准备开始执行指令后的回调},()=>{//完成执行的回调});
/**
* 同步方法
*
* @param options 执行的指令 示例 {"cmd":"具体指令"} 注意指令不要有 "ffmpeg "开头 直接输入指令 比如 "-version"
* 返回结果数据结构 {
* code:1.成功 0.失败
* message:错误信息
* }
* @return 返回执行指令的结果 map
*/
func runCmdCodeSyncFunc({执行指令的map 必须包含key "cmd"});
<template>
<view>
<textarea v-model="input"></textarea>
<textarea v-model="onput"></textarea>
<textarea maxlength="1000000000" v-model="cmd"></textarea>
<button @click="Texec">同步执行</button>
<button @click="Yexec">异步执行</button>
</view>
</template>
<script>
var _self
var FFmpeg
export default {
components: {
},
onLoad() {
_self = this
_self.input = plus.io.convertLocalFileSystemURL('/static/1.mp4')
//输出目录
_self.onput = plus.io.convertLocalFileSystemURL("_doc")+new Date().getTime()+".mp4"
//引入插件
FFmpeg = uni.requireNativePlugin('pocaidao-fmpegcmdruns')
//全局设置回调
FFmpeg.setStaticCallBack((data)=>{
console.log("处理数据")
console.log(data)
},(log)=>{
console.log("日志数据")
console.log(log)
})
},
onShow() {
},
onUnload(){
},
watch:{
},
data() {
return {
cmd: '-version',
input: '',
onput: ''
}
},
methods: {
Texec(){
var res = FFmpeg.runCmdCodeSyncFunc({"cmd": _self.cmd})
console.log("同步命令返回结果")
console.log(res)
},
Yexec(){
FFmpeg.runCmdCodeAsyncFunc({"cmd": _self.cmd},(start)=>{
console.log("异步命令id" + start)
},(end)=>{
console.log("异步命令结束" )
console.log(end)
})
}
}
}
</script>
<style scoped>
</style>