废话少说,先上效果图:
得如何实现这样的效果呢?
之前有一个音视频合成的需求,还写了一篇文章无声视频合成音频。之前的需求是,视频整体时间控制在 10s(便于发布到朋友圈),现在朋友圈的限制改为 15s 了,所以产品决定不再限制视频的时长为 10s 了,改为最长 40s,若有发布到朋友圈的需求,则自己裁剪。大部分情况下,生成的视频长度会小于 15s,也不需要裁剪。需求调整后,之前文章里的音视频合成的方案就需要略作修改了。
说下之前的方案:利用录屏生成 10s 的无声视频,与正好 10s 的音频 aac 文件进行合成。之前的代码最终生成的文件长度为音视频文件的最大值(若视频为 10s,音频为 15s,则会生成 15s 的视频,视频最后 5s 一直展示视频的最后一帧,同时播放音乐)。现在调整视频时长后,产品定的需求是视频时长增加,然后音频循环播放。所以可能就是 24s 的无声视频合成 10s 的音频。所以之前的代码就得调整了:
more >>早期博客图床使用的七牛图床,七牛图床被黄图给搞了,所以现在测试域名都只有一个月的使用期限,早些阵子就已经过期回收了,所以之前的测试域名绑定的图片全部失效了,2018-10-10 之前的博客图片全部看不了了,阿西吧~若要继续使用七牛图床,需要自己绑定加速域名,重新迁移才行。而绑定加速域名是需要已经备案过的,备案又需要实名制,而我的域名还没有实名制QAQ,不巧的是阿里域名根据工信部的条款,关闭了 .win 域名后缀的实名制认证,这就很尴尬了
。然后一直等阿里云开放域名实名认证,等到现在也还没开放,今天下定决心把图片都迁移一下,不用七牛了。
图片所在的旧 Bucket 测试域名被回收之后,就彻底看不到图片资源了,也下载不了,只能借助七牛官方工具 qshell 来进行相关操作。
随着 Android 开发的越来越规范,那些“黑科技”的保活手段基本没什么用了,所以只能通过引导,让用户自己去设置相关保活的选项,就像 Rom 的白名单。只不过白名单是系统帮你设置,没有白名单就得自己去引导了。保活相关的一般包含自启动和防睡眠,当然功能在各个 Rom 的描述不尽相同,不用纠结于此。
针对各大厂商,做了一些准备工作,如下。
作为 Android 开发,对消息总线总不会陌生,当需要告知某些界面进行一些操作的时候,都会通过发送消息来做。早期的可以有广播,或者回调的方式,但是写起来都会比较麻烦,所以才会出现 EventBus 这种三方库,它使用起来非常方便,极大的解耦了我们的代码,所以当它一出现就受到了广大开发者的青睐。那用了这么久的 EventBus,香确实是很香,但是感觉还可以有优化的地方:
所以,在新出了 LiveData 之后,基于它的特性,是否可以进行改造呢?当然是可以的。
more >>MotionLayout 是 ConstraintLayout 2.0 版本引入进来的,目前还在测试版本中,但感觉还挺有意思的,就写一篇记录一下。
MotionLayout 类继承自 ConstraintLayout 类,允许你为各种状态之间的布局设置过渡动画。由于 MotionLayout 继承了 ConstraintLayout,因此可以直接在 XML 布局文件中使用 MotionLayout 替换 ConstraintLayout。MotionLayout 是完全声明式的,你可以完全在 XML 文件中描述一个复杂的过渡动画而无需任何代码。
MotionLayout 与 ConstraintLayout 不同的是 MotionLayout 需要链接到一个 MotionScene 文件。使用 MotionLayout 的 app:layoutDescription 属性将 MotionLayout 链接到一个 MotionScene 文件。另外,MotionLayout 所有的直接子 View 需要指定 id,不然会报错:1
All children of ConstraintLayout must have ids to use ConstraintSet.
项目中有视频上传的功能,但一直没做断点续传,针对大视频上传不友好,最近的版本需求将断点续传加上了,服务端采用的是 multipart/form-data 编码方式来实现,那么客户端也依照这个方式来做就好了。
multipart/form-data 方式用于大数据 Post 请求,用做分片正好合适。它对数据有一定的格式,参照示例:1
2
3
4
5
6
7
8
9
10
11
12
13POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"
title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png
PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--
每部分都是以--boundary
开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以--boundary--
标示结束。
tag:
缺失模块。
1、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
2、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: true raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true