教程含有两个部分,第一是利用GifView的jar包采用最简单的方法在ui界面进行gif的播放,第二是利用ffmpeg插件将视频转换为Gif。
一.ui界面播放gif
在网上找了很多参考,但修改为js代码会很麻烦,最后选择使用GifView这个jar包来进行gif的播放,体积小而且很简单。
文末下载的文件素材已包含这个jar包以及相关api介绍,若想了解更多,需要科学上网进入jar包原网址:
https://code.google.com/p/gifview/
等到下载好GifView的jar包,将它移动到工程目录下,像使用控件那样就可以调用它:
"ui";
/**
* 作者: 姜来式
* QQ: 1216951671
**/
runtime.loadJar("./GifView.jar")
ui.layout(
<vertical w="*" h="*" gravity="center">
<com.ant.liao.GifView w="100" h="100" id="gif"/>
<com.ant.liao.GifView w="200" h="200" id="gif2"/>
<button id="convert" w="*" h="auto" text='视频转GIF' textAllCaps="false" style="Widget.AppCompat.Button.Colored" />
</vertical>
);
//读取GIf文件
var g = files.readBytes("./test.gif")
// 设置显示的大小,拉伸或者压缩
ui.gif.setShowDimension(200, 200);
// 设置 Gif 图片源
ui.gif.setGifImage(g)
var g2 = files.readBytes("./热爱学习.gif")
ui.gif2.setShowDimension(400,400);
ui.gif2.setGifImage(g2)
随后便可看到,gif在ui界面动了起来:
二.视频转gif
利用ffmpeg将视频或者视频的某一段转换成gif动态图片非常简单,只需要一条命令。由于auto.js也有这个插件,那么就选择使用此插件进行GIF的转换。
ui.convert.click(function(){
var intent = new Intent();//意图跳转,选择视频文件
intent.setType("video/*");
/* 使用Intent.ACTION_GET_CONTENT这个Action */
intent.setAction(Intent.ACTION_GET_CONTENT);
activity.startActivityForResult(intent, 1);
activity.getEventEmitter().on("activity_result", (requestCode, resultCode, data) => {
if (requestCode == 1) {
if (resultCode == -1) {
let uri = data.getData();
// let p = app.getPathFromUri(uri)
//转换为绝对路径
realpath = getfilepath(uri)
//取文件名,例如1.MP4就取1
name = files.getNameWithoutExtension(realpath)
//设置文件名1.gif
filename = rootpath+name+".gif"
//toastLog(filename)
// 使用ffmpeg提取文件为mp3,参见https://www.baidu.com/s?wd=ffmpeg%20%E8%A7%86%E9%A2%91%E6%8F%90%E5%8F%96mp3
//-s用于设定分辨率, -r 用于设定帧数,一般设置8帧左右就行。
let result = ffmpeg.inProcess.exec(` -i "${realpath}" -s 442x960 -r 8 "${filename}" `);
toast("转换成功")
media.scanFile(filename)
app.viewFile(filename)
}
}
})
})
ffmpeg命令简单介绍:
-ss 起始时间 -t 持续时间 -i 输入文件 -s 分辨率 -r 帧数 输出文件
ffmpeg命令参考:
https://www.xstui.com/read/1082
如果视频较长,那么当你选择文件后就会卡顿一会才会转换成功,这些都是正常现象
代码、jar包及相关素材下载地址:
https://jianglaishi.lanzout.com/iHJ050dhlpzc
apk下载地址:
https://jianglaishi.lanzout.com/iSPWo0dhlu0h
密码:bdbp