短视频类开发 SDK 备选
趣拍云
又拍云
官网
云端处理方案, 可以鉴黄
简单对视频的处理是一套 , 对人脸进行识别定位的是另一套
SCRecorder
可以仿照获得类似 vine(原先国外的短视频应用) 的效果, 但是现在找到的 Demo 来说, 视频和音频的剪辑, 断点续录还没有完全一样的, 现在有两个分开的 Demo
- 官方SCRecorder: 有断点续录功能, 特效切换等
- prankPro: 一次录完, 有音效的合成
- NextLevel: 有 OC 版本, 这个是 Swift 版本, 但是好像没有妹夫效果, 但是在速度控制有选项
- 也有用了 SC 之后弃用的: 参考
5.
SCReacorder 的问题
录制出来拼接音频后, 发现时间轴不对, 音频比较快
目前打开那个 fast 什么的好像差不多了…
但是碰到了 crash
关于合并视频和音轨时发生错位的情况, 可以发现在播放视频时前面出现一段黑屏, 但是音乐是直接出来了, 这样视频就较音乐落后了点
在合并时将音频的插入时间延后一点, 尅解决问题, 具体延后多少….目前就只能自测, 因为不能确切的肯定视频延后了多久.
原因的话目前猜想是: SCRecorder 对视频的处理问题.
在使用SC 时, 设置 Fast 什么的属性时, 可以看到延后变小了, 但是还是存在一些不确定因素, 所以目前就根据结果对音频的插入时间进行处理…
其中的坑: CMTime, 这个是用以标识音视频这些处理的时间, 不是自然时间
结构其中的说明, 官方比较简陋, 查资料有:
CMTimeMake顧名思義就是用來建立CMTime用的,
但是千萬別誤會他是拿來用在一般時間用的,
CMTime可是專門用來表示影片時間用的類別,
他的用法為: CMTimeMake(time, timeScale)
time指的就是時間(不是秒),
而時間要換算成秒就要看第二個參數timeScale了.
timeScale指的是1秒需要由幾個frame構成(可以視為fps),
因此真正要表達的時間就會是 time / timeScale 才會是秒.
簡單的舉個例子:
CMTimeMake(60, 30);
CMTimeMake(30, 15);
在這兩個例子中所表達在影片中的時間都皆為2秒鐘,
但是影隔播放速率則不同, 相差了有兩倍.
人脸识别
科大讯飞: 免费, 识别率高
sensetime: 抖音在用的 金山里的链接, 并没有找到单独的SDK
face++ : 有试用, 正式的appkey是按流量收费的
CIDetector : CoreImage 中的一个类, 里面有识别脸的方法, 但是好像返回的脸不能转的, 是返回一个CGRect矩形 比较完善的链接
大概使用到的方法(查的, 未验证)
1 | //识别图片: |
使用openCV 培训出一个识别人脸的算法
OpenCV 的 API 是 C++ 的。它由不同的模块组成,这些模块中包含范围极为广泛的各种方法,从底层的图像颜色空间转换到高层的机器学习工具。
这篇 OpenCV 的 iOS 教程告诉你只要把所有用到 OpenCV 的类的文件后缀名改为 .mm 就行了,包括视图控制器类也是如此。这么干或许能行得通,却不是什么好主意。正确的方式是给所有你要在 app 中使用到的 OpenCV 功能写一层 Objective-C++ 封装。这些 Objective-C++ 封装把 OpenCV 的 C++ API 转化为安全的 Objective-C API,以方便地在所有 Objective-C 类中使用。走封装的路子,你的工程中就可以只在这些封装中调用 C++ 代码,从而避免掉很多让人头痛的问题,比如直接改文件后缀名会因为在错误的文件中引用了一个 C++ 头文件而产生难以追踪的编译错误。