Skip to content

Commit

Permalink
refactor camera renderer to support Camera and CameraX, a new media p…
Browse files Browse the repository at this point in the history
…icker library like TikTok, etc

重构相机渲染器以同时支持Camera 和 CameraX 接口,添加新的仿抖音的媒体选择器等功能
  • Loading branch information
CainKernel committed Jan 1, 2020
1 parent 3d7b596 commit c2ca924
Show file tree
Hide file tree
Showing 376 changed files with 17,230 additions and 11,373 deletions.
18 changes: 14 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,27 @@ CainCamera是一个集美颜相机、图片编辑、短视频编辑等功能的
## 备注:
由于彩妆功能缺乏各种素材,本人只写了一个大概的流程,彩妆主要是素材绘制有无素材的区别而已,有兴趣的可以参考一下

2、段视频编辑部分
2、短视频编辑部分
* 仿照抖音编辑功能。目前短视频编辑页面是仿照抖音页面来实现的。
* 自研基于FFmpeg的视频播放器。目前播放器已经包装成MediaPlayer-like的方式,支持快速seek、倍速播放、实时添加特效预览功能。写这个视频播放器的目的也是用于短视频编辑页面的实时预览处理,目前还有不少的BUG,商用的话建议慎重使用
* 简单实现剪辑功能。目前是基于remuxing 来实现的,但还没有对倍速做处理,后续再做处理
* 实时特效。目前已经在播放器上实现了抖音的闪白、幻觉、缩放、抖动、灵魂出窍等滤镜特效以及全部的分屏特效。由于时间特效需要对播放器进行改动,暂时没时间实现。
## 备注:
目前短视频合成功能暂时还没时间实现,目前由于换城市换工作搬家啥的,最近暂时没啥时间,等忙完这段时间,我再把合成功能实现,暂时先别提合成功能相关的issues,谢谢合作。

注意事项:关于人脸关键点SDK验证问题,由于采用Face++的试用版作为测试的,每天使用的次数有限
## 更新
2020年1月1日更新:
目前为了方便接入CameraX库,重写了原来的拍摄页渲染流程以及接入倍速录制功能,目前CameraX库回调数据上面还有些BUG,导致人脸SDK检测出现错乱,这是已知问题,后续有时间再修复。
接下来到春节期间,将会抽时间把编辑页面的合成功能实现,敬请期待。

# 关于人脸SDK验证问题
关于人脸关键点SDK验证问题,由于采用Face++的试用版作为测试的,每天使用的次数有限
所以这里建议大家到Face++官网(https://www.faceplusplus.com/) 注册一个Key使用,需要先注册Key,然后绑定Bundle(包名)才能使用。
要不然我这边每次想要更新功能都要重新搞一个key,比较麻烦。谢谢大家合作。
国内用户需要到https://www.faceplusplus.com.cn/ 注册。 注册流程如下:
[Face++ SDK注册流程](https://github.com/CainKernel/CainCamera/blob/master/document/introduction/facepp_register.md)

更多关于Face++ SDK相关的问题,可以到Face++官方github询问:
[MegviiFacepp-Android-SDK](https://github.com/FacePlusPlus/MegviiFacepp-Android-SDK)

# library介绍:
* cameralibrary: 相机库,包括渲染渲染线程、渲染引擎等流程
Expand All @@ -37,7 +47,7 @@ CainCamera是一个集美颜相机、图片编辑、短视频编辑等功能的
* medialibrary: 短视频编辑库。用于短视频编辑实时预览的播放器、音频裁剪器、视频合成器等全套C++代码。
音视频裁剪器、视频合成器目前仍在开发阶段,敬请期待。

* scanlibrary: 媒体扫描库。用于遍历扫描媒体库中的图像、视频。
* pickerlibrary: 媒体选择库。用于选择媒体库中的图像、视频。

* utilslibrary: 共用工具库。bitmap处理、文件处理、字符串处理的封装工具。

Expand Down
17 changes: 9 additions & 8 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ android {
targetSdkVersion 28
versionCode 2
versionName "1.1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++11"
Expand Down Expand Up @@ -44,15 +44,16 @@ dependencies {
implementation project(':cameralibrary')
implementation project(':filterlibrary')
implementation project(':imagelibrary')
implementation project(':scanlibrary')
implementation project(':pickerlibrary')
implementation project(':medialibrary')
implementation project(':utilslibrary')
implementation project(':videolibrary')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.github.bumptech.glide:glide:4.7.1'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.github.bumptech.glide:glide:4.10.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
30 changes: 8 additions & 22 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,30 +3,18 @@
package="com.cgfay.caincamera">
<!-- 高通GPU调试权限 -->
<uses-permission android:name="com.qti.permission.PROFILER" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- 存储权限 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 存储权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- 相机权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 相机权限 -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FLASHLIGHT" />

<!-- 位置权限 -->
<uses-permission android:name="android.permission.FLASHLIGHT" /> <!-- 位置权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- 录音权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<!-- 获取设备信息权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 录音权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 获取设备信息权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- opengles版本控制 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- opengles版本控制 -->
<uses-feature
android:glEsVersion="0x00030000"
android:required="true" />
Expand All @@ -38,7 +26,7 @@
android:resizeableActivity="false"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:theme="@style/NoActionBarTheme">
<activity android:name=".activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
Expand All @@ -52,9 +40,7 @@
android:theme="@style/NoActionBarTheme" />
<activity
android:name=".activity.FFMediaRecordActivity"
android:theme="@style/NoActionBarTheme" />

<!-- 全面屏兼容逻辑 -->
android:theme="@style/NoActionBarTheme" /> <!-- 全面屏兼容逻辑 -->
<meta-data
android:name="android.max_aspect"
android:value="2.4" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.cgfay.caincamera.activity;

import android.support.v7.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

import com.cgfay.caincamera.R;
Expand Down
Loading

0 comments on commit c2ca924

Please sign in to comment.