更新记录
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 |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
/ Title: XF-ffmpegPlus Description: XF-ffmpegPlus封装了在Android和iOS中执行ffmpeg的命令对进行音视频处理的逻辑。 /
模块接口
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及更高版本