相关文章推荐
捣蛋的针织衫  ·  FFMPEG结构体分析 ...·  13 小时前    · 
近视的金鱼  ·  如何在flutter ...·  10 月前    · 
长情的风衣  ·  JavaScript ...·  1 年前    · 
刚毅的啤酒  ·  .Net Core Pdf ...·  1 年前    · 
冷冷的青蛙  ·  Spring Cloud Kubernetes·  1 年前    · 

教程含有两个部分,第一是利用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

利用ffmpeg将视频或者视频的某一段转换成gif动态图片非常简单,只需要一条命令。由于auto.js也有这个插件,那么就选择使用此插件进行GIF的转换。教程含有两个部分,第一是利用GifView的jar包采用最简单的方法在ui界面进行gif的播放,第二是利用ffmpeg插件将视频转换为Gif。在网上找了很多参考,但修改为js代码会很麻烦,最后选择使用GifView这个jar包来进行gif的播放,体积小而且很简单。如果视频较长,那么当你选择文件后就会卡顿一会才会转换成功,这些都是正常现象。 上传文件, 自然有服务器和客户端, 恰好autojs支持nodejs, 又支持webview, 所以下面的代码都可以在autojs中直接运行. 手机: Mi 11 Pro Android版本: 11 Autojs版本: 9.0.14 使用的koa, 依赖如下, 执行npm i 安装依赖 "dependencies": { "koa": "^2.13.4", "koa-body": "^4.2.0", "koa-router": "^10.
function animate(obj, target, callback) { // console.log(callback); callback = function() {} 调用的时候 callback() // 先清除以前的定时器,只保留当前的一个定时器执行 clearInterval(obj.timer); obj.timer = setInt...
参考资料里的脚本 报错 invalid put policy encoding 度娘后得知是$putPolicy应为json格式 /* https://www.jianshu.com/p/8d3bbc28c2ac */ //安全的base64函数 function urlsafe_b64encode($string) $data = base64_encode($string);