Webview 支持 Intent协议

协议说明

主要协议如下:

intent:
   HOST/URI-path // Optional host
   #Intent;
      package=[string];
      action=[string];
      category=[string];
      component=[string];
      scheme=[string];
   end;

如果应用未安装,可以添加url进行跳转说明

S.browser_fallback_url=[encoded_full_url]

S.[param] 表示 intent 中传的参数,可自行扩展。

android端修改参考

https://stackoverflow.com/questions/35609107/android-open-intent-protocol-in-webview

intent协议参考chrome中说明:

Tinypng 批量压缩脚本(python)

#-*-coding:UTF-8-*-
import sys
reload(sys)
import os
import os.path
import tinify

def main():
    tinify.key = "dS0hSsPFkIFCGV5Nn0lFXcxR1RqHoP0G"
    global globalCurpath
    globalCurpath = os.path.abspath(os.curdir)
    compressPath = ""
    paramCount = len(sys.argv)
    if paramCount >= 2:
        compressPath = sys.argv[1]

    print compressPath
    compress(globalCurpath, compressPath)


def compress(path,fileName):
    rootPath = os.path.join(path,fileName)

    if (os.path.isdir(rootPath)):
        files = os.listdir(rootPath)
        for f in files:
            # 排除隐藏文件夹
            if f[0] == '.' or f.endswith(".txt"):
                print "hidden file or dir:" + f
            else:
                compress(rootPath, f)
    else:
        if fileName == '.' or fileName.endswith(".txt"):
            print "hidden file or dir:" + fileName
        elif fileName.endswith(".png") or fileName.endswith(".jpg"):
            compressImg(rootPath, rootPath)

def compressImg(inputFile, outputFile):
    source = tinify.from_file(inputFile)
    source.to_file(outputFile)

def findParam(param, defValue):
    result = None
    paramCount = len(sys.argv)
    for i in xrange(0, paramCount):
        if (sys.argv[i] == param):
            result = param
            return result
    if i == paramCount - 1:
        result = defValue
    return result

if __name__ == '__main__':
    main()

FFMpeg压缩音频

ffmpeg环境 准备

http://ffmpeg.org/download.html

音频压缩

ffmpeg -i "PZONKA190313.wav" -b:a 64k -acodec mp3 -ar 44100 -ac 1 "1.mp3"

命令参数解释:
 -i "PZONKA190313.wav"  输入的音频文件
 -b:a 64k               表示音频的码率为64kb/s,即8kB/s;
 -acodec mp3            表示设定声音编解码器为mp3;
 -ar 44100              表示设定采样率为44100;
 "1.mp3"                表示输出保存的文件名。

参考:https://cloud.tencent.com/developer/article/1378937

B Compare在Mac 下一直试用

Beyond Compare每次启动后会先检查注册信息,试用期到期后就不能继续使用。解决方法是在启动前,先删除注册信息,然后再启动,这样就可以永久免费试用了。

FFMPEG音视频合成

两类FFmpeg命令行

  • 视频、音频、图片的转换。
  • 增加处理效果。

例如增加水印、增加gif、音频延迟等。一般是通过滤镜功能实现。 滤镜参考资料:

http://ffmpeg.org/ffmpeg-filters.htmlhttp://blog.chinaunix.net/uid-26000296-id-4282537.html

FFmpeg命令行举例

视频截取

ffmpeg -ss 00:46:28 -i "Morning_News.asf" -acodec copy -vcodec copy -t 00:03:25 output.asf

命令参数解释:
-ss: 开始时间
-i:输入源
-acodec copy -vcodec copy:视频和音频编码不变
-t:在该时间点停止输出

视频转码

ffmpeg -i INPUT -f FORMAT OUTPUT

example:
ffmpeg -i "D:/result.mpge" -f mp4 "D:/result.mp4"

去除视频声音

ffmpeg -i 1.avi -vcodec copy -an 2.avi

合并音频和视频

fmpeg -i a.wav  -i a.avi out.avi
若音频比视频长,画面停留在最后一帧,继续播放声音

音频提前或延迟N秒

ffmpeg -i ogg.ogg -i 1.avi -filter_complex "adelay=3000|3000" output.avi
-filter_complex "adelay=3000|3000":对前面的ogg音频的两个声道都延迟3000毫秒
http://ffmpeg.org/ffmpeg-all.html#adelay

音频合成

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT

inputs=3:三个输入
duration=first:输出长度为第一个输入的长度
dropout_transition=3:声音淡出时间为3秒

Webp 转换工具

在代码编写过程中需要将png、jpg、gif转换成webp格式,减小包体积大小,当然相对gif,webp的优势有色彩丰富,可以自己定义背景透明。

Google Proto Buffer 协议研究

protobuffer 协议分析

ProtoBuffer 协议中数据经过序列化之后生成的二进制流非常紧凑,这个得益于Varint,Varint 是一种表示数字的紧凑型方法,它用一个或者多个字节表示一个数字,越小的数字字节越少

Hugo 个人博客建站

hugo主页

https://gohugo.io/

hugo编辑器

https://gohugo.io/tools/editors/

开源MARKDOWN编辑器ATOM

GitHub

https://github.com/atom/atom

下载地址

https://github.com/atom/atom/releases/tag/v1.37.0

hugofy

https://atom.io/packages/hugofy

ubuntu 下安装 hugo的坑

正常在 ubuntu下安装通过:

sudo apt-get install hugo

但是很遗憾的是,这样安装只能到 hugo 的 0.4.0 版本,一些主题对版本要求比较高,这个时候就会出现问题,那怎么安装更高的版本呢?

Ffmpeg Android 移植

通过编译ffmpeg原文件,使得ffmpeg可以在android上以命令行的形式进行运行。 最终会生成几个平台下的ffmpeg可执行文件。

Github地址

ffmpeg命令行执行android端调用封装