更新记录

1.2(2024-07-11)

新增ffprobe命令执行接口

1.1(2024-06-27)

修复安卓合成字幕时不显示字幕的bug。

1.0(2024-03-02)

初始化版本发布

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 14.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 适用版本区间:12 - 17

原生插件通用使用流程:

  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原生插件配置”->”云端插件“列表中删除该插件重新选择


/ Title: XF-ffmpegPlus Description: XF-ffmpegPlus封装了在Android和iOS中执行ffmpeg的命令对进行音视频处理的逻辑。 /

[executeCommand](#a0) [executeCommandSync](#a1) [stopCommand](#a2) [audioMerge](#a3) [videoMerge](#a4) [getFileInfo](#a5) [getFileInfoSync](#a6) [executeCommand](#a7)

模块接口

executeCommand

执行ffmpeg命令

executeCommand({params},callback(ret))

params

cmd:

  • 类型:字符串型
  • 描述:(必填项)需要执行的命令内容(文件支持_www _doc)[对于命令中使用的文件是否存在的验证需要开发者调用接口前验证,否则会导致App崩溃]

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
    evenType : '',//onCompleted 转换完成
                   // 转换进度
                   //onCancel 退出转换
                   //onError 转换异常
    time : '',//事件时有值
    speed : '',//事件时有值
    fps : '',//事件时有值
    msg: "",
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
var aaPath = plus.io.convertLocalFileSystemURL("_www/static/aa.mp3");
var bbPath = plus.io.convertLocalFileSystemURL("_www/static/bb.mp3");
var savePath = plus.io.convertLocalFileSystemURL("_doc/" + new Date().getTime() + ".mp3");

demo.executeCommand({
   cmd: '-i concat:'+aaPath+'|'+bbPath+' -acodec copy '+savePath
},function(ret){
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

executeCommandSync

执行ffmpeg命令

executeCommandSync({params})

params

cmd:

  • 类型:字符串型
  • 描述:(必填项)需要执行的命令内容(文件支持_www _doc)[对于命令中使用的文件是否存在的验证需要开发者调用接口前验证,否则会导致App崩溃]

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
    evenType : '',//onCompleted 转换完成
                   // 转换进度
                   //onCancel 退出转换
                   //onError 转换异常
    time : '',//事件时有值
    speed : '',//事件时有值
    fps : '',//事件时有值
    msg : ''
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
var aaPath = plus.io.convertLocalFileSystemURL("_www/static/aa.mp3");
var bbPath = plus.io.convertLocalFileSystemURL("_www/static/bb.mp3");
var savePath = plus.io.convertLocalFileSystemURL("_doc/" + new Date().getTime() + ".mp3");

demo.executeCommandSync({
    cmd: '-i concat:'+aaPath+'|'+bbPath+' -acodec copy '+savePath
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

stopCommand

中断停止命令的执行

stopCommand({},callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true   //布尔型;true||false
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
demo.stopCommand({});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

audioMerge

音频的合并

audioMerge({params},callback(ret))

params

onePath:

  • 类型:字符串型
  • 描述:(必填项)需要合并的音频文件1(文件支持_www _doc)

twoPath:

  • 类型:字符串型
  • 描述:(必填项)需要合并的音频文件2(文件支持_www _doc)

targetPath:

  • 类型:字符串型
  • 描述:(必填项)合并后文件存放路径(文件支持_www _doc)

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
   evenType : '',//onCompleted 转换完成
                   // 转换进度
                   //onCancel 退出转换
                   //onError 转换异常
    time : '',//事件时有值
    speed : '',//事件时有值
    fps : '',//事件时有值
    msg: "",
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
demo.audioMerge({
    onePath: plus.io.convertLocalFileSystemURL("_www/static/aa.mp3"),
    twoPath: plus.io.convertLocalFileSystemURL("_www/static/bb.mp3"),
    targetPath: plus.io.convertLocalFileSystemURL("_doc/" + new Date().getTime() + ".mp3")
},function(ret){
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

videoMerge

视频和音频合并

videoMerge(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
    evenType : '',//onCompleted 转换完成
                   // 转换进度
                   //onCancel 退出转换
                   //onError 转换异常
    time : '',//事件时有值
    speed : '',//事件时有值
    fps : '',//事件时有值
    msg: ""
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
demo.videoMerge({
    videoPath: plus.io.convertLocalFileSystemURL("_www/static/aa.mp4"),
    audioPath: plus.io.convertLocalFileSystemURL("_www/static/bb.mp3"),
    targetPath: plus.io.convertLocalFileSystemURL("_doc/" + new Date().getTime() + ".mp4")
},function(ret) {
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

getFileInfo

获取视频文件属性

getFileInfo(callback(ret))

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
   tags : '',
   allProperties : '',
   bitrate : '',
   duration : '',
   filename : '',
   format : '',
   longFormat : '',
   size : '',
   msg: ""
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
demo.getFileInfo({
    path: plus.io.convertLocalFileSystemURL("_www/static/aa.mp4")
},function(ret) {
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

getFileInfoSync

获取视频文件属性

getFileInfoSync(callback(ret))

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
    msg : '',
   tags : '',
   allProperties : '',
   bitrate : '',
   duration : '',
   filename : '',
   format : '',
   longFormat : '',
   size : '',
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
var ret = demo.getFileInfoSync({
    path: plus.io.convertLocalFileSystemURL("_www/static/aa.mp4")
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

executeFFprobeCommand

执行ffprobe命令

executeFFprobeCommand({params},callback(ret))

params

cmd:

  • 类型:字符串型
  • 描述:(必填项)需要执行的命令内容(文件支持_www _doc)[对于命令中使用的文件是否存在的验证需要开发者调用接口前验证,否则会导致App崩溃]

callback(ret)

ret:

  • 类型:JSON对象
  • 内部字段:
{
    status: true,   //布尔型;true||false
    evenType : '',//onCompleted 转换完成
                   //onLog 日志信息
                   //onCancel 退出转换
                   //onError 转换异常
    sessionId : '',//onLog事件时有值
    level : '',//onLog事件时有值
    message : '',//onLog事件时有值
    errMsg: "",
}

示例代码

const demo = uni.requireNativePlugin('XF-ffmpegPlus');
var aaPath = plus.io.convertLocalFileSystemURL("_www/static/aa.mp4");
var bbPath = plus.io.convertLocalFileSystemURL("_www/static/4K.csv");

demo.executeFFprobeCommand({
   cmd: '-i '+aaPath+' -select_streams v -show_entries packet=pts_time,duration_time,flags  -of csv -o '+bbPath
},function(ret){
});

可用性

iOS、Android系统

可提供的1.0.0及更高版本

隐私、权限声明

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

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

插件不采集任何数据

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

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