更新记录
v1.0.0(2023-02-01)
第一版支持Android,后续更新支持iOS,欢迎下载
平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:4.4 - 12.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:支持 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在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原生插件配置”->”云端插件“列表中删除该插件重新选择
WYR-EasyFFMpeg
此插件完整集成了FFmpeg FFprobe,和官方Video不冲突,可以用于处理绝大部分视频编辑问题,比如视频裁剪,视频格式转换,截取视频中部分片段为gif动图,视频转音频,图片转视频,加水印,获取视频封面截图,录制视频然后进行编码转换等功能。还有很多功能等待您去发现,FFmpeg已完整集成在Android端,IOS版本会在后面版本中发布,敬请期待,IOS FFmpeg版本的插件已经提上日程,有问题可以给我发邮箱1169824159@qq.com
使用说明
//引入插件
const ffmpeg = uni.requireNativePlugin('WYR-EasyFFMpeg');
//同步运行FFmpeg命令
//cmd就是你要执行的命令,比如要执行ffmpeg -version
//那么cmd就是-version
const res = ffmpeg.execute(cmd);
console.log(res);
//返回
/*
{
code: 0,//0表示成功
msg: 'Command execution completed successfully'
}
*/
//异步运行FFmpeg命令
ffmpeg.executeAsync(cmd, res => {
console.log(res);
});
//终止命令
ffmpeg.cancel();
//运行FFprobe命令
res = ffmpeg.probeExecute(cmd);
console.log(res);
//获取媒体文件信息
res = ffmpeg.getMediaInformation(filepath);
console.log(res);
注意,文件路径一定要传绝对路径
举个例子
/**
* 下载视频然后对某一时间抽帧成jpg
* @param video_url 要下载的视频
* @returns {string}
*/
getJpegFromVideo(video_url) {
uni.downloadFile({
url: video_url,
success: res => {
if (res.statusCode === 200) {//下载成功
//这里是关键,要把下载的本地临时路径转换成绝对路径
const tempFile = plus.io.convertLocalFileSystemURL(res.tempFilePath);
//文件名
const fileName = this.getFileName(tempFile);
//文件名.jpg
const jpgPath = fileName + '.jpg';
//执行抽帧命令
//抽取视频第10秒,输出jpg
const cmd = `-ss 00:00:10 -i ${tempFile} -r 1 -vframes 1 ${jpgPath}`;
const output = ffmpeg.execute(cmd);
if (output.code === 0) {
//抽帧成功,然后做自己的处理逻辑
} else {
console.log(output);
}
}
},
fail: err => {
console.log(err);
}
});
}
/**
* 获取文件名
* @param name
* @returns {string}
*/
getFileName(name) {
return name.substring(0, name.lastIndexOf("."))
}
参考命令
提取音频:
-i input.mp4 -acodec copy -vn out.aac
提取视频:
-i input.mp4 -vcodec copy -an out.h264
格式转换:
-i input.mp4 -vcodec copy -acodec copy out.flv
音频合并:
-i input.h264 -i input.aac -vcodec copy -acodec copy out.mp4
抽取yuv数据:
-i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv
添加水印:
-i input.mp4 -vf "movie=logo.png,scale=64:48[watermask];[in][watermask] overlay=30:10 [out]" out.mp4
视频转gif:
-i input.mp4 -ss 00:00:00 -t 10 out.gif
更多命令参考
FFmpeg文档汇总:https://ffmpeg.org/documentation.html
FFmpeg filters文档:https://ffmpeg.org/ffmpeg-filters.html