iOS 11适配
http://www.jianshu.com/p/56a3667ec6b9
http://www.jianshu.com/p/352f101d6df1
https://github.com/ChenYilong/iOS11AdaptationTips
Bugly整理iOS11升级 http://www.10tiao.com/html/330/201707/2653579210/1.html
oc 调用 c c++ 需要注意的地方
|
|
hpp
|
|
cpp
|
|
|
|
从官网下载v2ray的运行文件放在/usr/bin/v2ray 目录下
v2ray release 下载
将config.json(或者你直接改名为v2ray.json)文件放在/etc/v2ray.json
将 /usr/bin/v2ray 和 /etc/v2ray.json 文件赋予权限 直接猛点的权限赋值方法 chomd 777 path
|
|
对应修改config.json文件后传到自己的lede的对应的目录中去
然后在网络设置中–代理—网页代理,安全网络代理中添加 你的路由器ip e.g. 192.168.1.111 加上对应的端口 1080;socks的代理配置同理
如果inbound 中的protocol: socks,需要在settings中增加 “auth”: “noauth”
|
|
|
|
https://github.com/v2ray/v2ray-core/issues/483
用otaku的一段代码实现了v2ray的进程守护
还是放在 /etc/init.d/v2ray
|
|
满足VMESS & SS协议
1 (以搬瓦工的Center OS 7 bbr)先用ssh登录
|
|
2 Bash命令安装
|
|
3 编辑服务端配置文件满足VMESS & SS协议
|
|
|
|
|
|
编辑 /etc/v2ray/config.json 文件来配置你需要的代理方式;
运行 service v2ray start 来启动 V2Ray 进程;
之后可以使用 service v2ray start|stop|status|reload|restart|force-reload 控制 V2Ray 的运行
|
|
以上配置适用于root权限下操作,若由于权限不足请自行搜索解决
如果遇到ssh无法登录的情况,可以先rm ~/.ssh/xxx 对应的文件然后再重新连接
这个配置生成只有一种协议,如果要支持多种协议,请参考上面贴出的code,分别为 inbound 和 inboundDetour
|
|
环境: 1.Xcode 8.3.x 2.Jenkins 3.Fastlane
初次使用使用
输入对应的 apple id 账号和密码
下面我将粘贴 fastlane 目录结构的对应文件的内容
|
|
Appfile
|
|
Fastfile
|
|
Jenkins
—- Execute shell
kiwi人脸跟踪SDK,主要功能包括:
我们的SDK针对移动端,在算法效率、硬件占用、性能精度等方面进行了相关优化,使其适用于移动端直播,美颜相机,滤镜相机,趣味贴纸,虚拟美妆等应用场景。
这个文档将演示如何利用我们的demo快速入门,并详细描述具体集成步骤。
该demo基于七牛的直播SDK,实现了在直播的场景下实现人脸跟踪以及趣味贴纸。
软件
* XCode 6.0 或以上版本
* iOS 7.0 或以上版本
硬件
* 支持语音/视频的真机设备
用XCode打开demo工程文件(PLMediaStreamingKitDemo)。代码包含以下目录结构
选中项目,如下图所示,点击 “Build and Run” 按钮进行编译
示例截图
| |
p.s. 该示例只支持在真机上实现功能,不支持模拟器。编译完成后,即可运行。
软件
硬件
自行下载(若项目中已经存在则不需要下载)
必选:
可选:
1. 导入 libKiwiFaceSDK.a 文件和所有包含的头文件、实现文件、资源文件。(我们提供了两种libKiwiFaceSDK.a文件。libKiwiFaceSDK.a同时支持模拟器与真机,供开发调试使用。libKiwiFaceSDK_release.a仅支持真机,供发布使用。)
![](images/KiwiFaceSDK.jpg)
2. 导入Tracker 人脸捕捉的SDK包和StickerManager。(我们提供了两种libfaceTrackerSDK.a文件。libfaceTrackerSDK_lic.a同时支持模拟器与真机,供开发调试使用。libfaceTrackerSDK_release.a仅支持真机,供发布使用。)
![](images/Tracker.jpg)
![](images/StickerManager.jpg)
这里注意tracker包的models文件夹和StickerManager文件夹下的stickers贴纸文件夹,必须只是导入引用,不要包含到项目工程里面来(文件夹图标为蓝色)。如下图设置:
![](images/target-settings.png)
3. 导入GPUImage,用于视频渲染(我们提供了两种libGPUImage.a文件。libGPUImage.a同时支持模拟器与真机,供开发调试使用。libGPUImage_release.a仅支持真机,供发布使用。)
4. 如有需要,导入libyuv
sdk视频帧的渲染暂时只支持NV21格式的传入 如果应用视频帧是YUV或者其他视频流类型 需要导入视频流格式的转换类。
5. 导入
opencv3.framework
注意,从官网下载的包有可能被错误的命名为opencv2.framework。
如果有需要,请配置贴纸。贴纸相关文件存放在stickers目录下,一套贴纸对应一个目录,每套贴纸包含一个config.json文件,其中配置了音效文件名及每个item参数等信息。其结构如下:
|
|
程序靠读取在stickers文件夹下的StickerConfig.json显示相应的贴纸和图标。
注意,使用贴纸云,需要在Info.plist中加入App Transport Security Settings字段,并将Allow Arbitrary Loads设置为YES。
具体的json文件格式如下:
StickerConfig.json
参数名称 | 意义 |
---|---|
name | 贴纸的名称(UI显示和贴纸的识别) |
dir | 贴纸存放路径文件夹名称 |
category | 类别(贴纸类型的区分或分组) |
thumb | 贴纸图标的文件名(与声音在同一文件夹下) |
voiced | true(有声音)false(没有声音播放) |
downloaded | 是否已经下载。如果没有下载,程序则可以去下载到指定目录后更改该状态 |
config.json
参数名称 | 意义 |
---|---|
type | 贴纸显示的位置类型(脸部、全屏) |
facePos | 贴纸在脸部的位置 |
scaleWidthOffset | 贴纸宽度缩放系数 |
scaleHeightOffset | 贴纸高度缩放系数 |
scaleXOffset | 贴纸在脸部水平方向偏移系数 |
scaleYOffset | 贴纸在脸部垂直方向偏移系数 |
alignPos | 边缘item参数 |
alignX | 边缘水平方向偏移系数 |
alignY | 边缘垂直方向系数 |
frameFolder | 贴纸资源目录(包括一组图片序列帧) |
frameNum | 帧数(一组序列帧组成一个动画效果) |
frameDuration | 每帧的间隔(秒) |
frameWidth | 图片的宽 |
frameHeight | 图片的高 |
trigerType | 触发条件,默认0,始终显示 |
编写config.json文件可使用我司提供的工具 https://apps.kiwiapp.mobi/sticker.html 进行调试生成。
如果直接使用我们SDK内置的UI, 可以在页面的viewDidload里面初始化SDK。
|
|
初始化具体功能:
初始化普通滤镜或贴纸集合
|
|
初始化哈哈镜滤镜集合
|
|
初始化美颜滤镜集合
|
|
初始化全局滤镜集合
|
|
调用具体功能:
|
|
去除具体功能:
|
|
增加特定滤镜,进行渲染:
在 sdk入口类中,有一个类型为KWRenderer的渲染类,由他来控制滤镜的增加。
|
|
滤镜对象必须遵守GPUImageInput和KWRenderProtocol两个协议才能正常被人脸捕捉和渲染。
删除特定滤镜,停止渲染:
|
|
人脸捕捉之后,在渲染视频帧之前可以对每一帧图像做自定义处理的回调block:
|
|
block 回调用于在人脸捕捉之后,渲染之前,可以对视频帧进行自定已处理的接口。Block的3个参数可供处理和使用:
我们建议在离开页面的时候释放内存
|
|
dispatch_semaphore 使用 http://www.cnblogs.com/snailHL/p/3906112.html
加锁/数据同步
dispatch_semaphore_create
dispatch_semaphore_signal
dispatch_semaphore_wait
|
|
测试代码1 单个block
|
|
测试代码2 多个 blcok
xxx.m
|
|
测试代码3
|
|
测试代码 4 加锁测试 ,反注释掉//
NSCondition 的对象实际上作为一个锁和一个线程检查器:锁主要为了当检测条件时保护数据源,执行条件引发的任务;线程检查器主要是根据条件决定是否继续运行线程,即线程是否被阻塞。
http://www.jianshu.com/p/5d20c15ae690
|
|
异步下载图片完成后同步完成数据库再通知UI刷新的机制
用 semaphore 来筛选(关断)出时间间隔的图像 buffter.筛选出来的buffer 再筛入 WriterInputPixelBufferAdaptor.
https://github.com/yangfangxue/GPUImageRecord.git
1.dispatch timer 的用法
|
|
//使用 timer 和销毁
GPUImageVideoCamera 中回调方法CMSampleBufferRef的 lock
|
|
录制配置路径的时候需要检测是否存在,清除历史文件
完成录制时候加入condition 保护
|
|
EA6300