更新记录

1.1(2021-09-09)

新增日志回调,已经取消执行指令

1.0.2(2021-09-07)

更新ios原生端的功能实现


平台兼容性

Android iOS
× 适用版本区间:10 - 14

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
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>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问