ios

통합 준비

개발자 환경 요구 사항

Xcode 11 이상: App Store 또는 여기에서 다운로드하십시오.
권장 실행 환경:
기기 사양: iPhone 5 이상. iPhone 6 및 이전 모델은 전면 카메라에 대해 최대 720p를 지원하며 1080p은 지원되지 않습니다.
시스템 요구 사항: iOS 10.0 이상.

SDK 가져오기

CocoaPods를 사용하거나 SDK를 수동으로 다운로드하여 프로젝트로 가져올 수 있습니다.
CocoaPods 사용
SDK를 다운로드하고 수동으로 가져오기
동적 다운로드 통합
1. CocoaPods 설치 터미널 창에 다음 명령어를 입력합니다(먼저 Mac에 Ruby를 설치해야 함).
sudo gem install cocoapods
2. Podfile 생성 프로젝트의 디렉터리로 이동하고 다음 명령을 입력하여 디렉터리에 Podfile을 생성합니다.
pod init
3. Podfile 편집 프로젝트 요구 사항에 따라 적절한 버전을 선택하고 Podfile을 편집합니다:
XMagic 스탠다드 버전 다음과 같이 Podfile을 편집합니다.
platform :ios, '8.0'

target 'App' do
pod 'XMagic'
end
XMagic 라이트 버전 XMagic 라이트 버전의 설치 패키지는 XMagic 스탠다드 버전보다 작습니다. 기본 버전 A1-00, 기본 버전 A1-01 및 고급 버전 S1-00만 지원합니다. Podfile을 다음과 같이 편집합니다.
platform :ios, '8.0'

target 'App' do
pod 'XMagic_Smart'
end
4. 로컬 저장소 업데이트 및 SDK 설치 터미널 창에 다음 명령어를 입력하여 로컬 리포지토리를 업데이트하고 SDK를 설치합니다.
pod install
pod 명령어 실행이 완료되면 SDK .xcworkspace 접미사가 통합된 프로그램 파일이 생성되며, 이를 더블클릭해 실행하면 됩니다.
5. 프로젝트에 효과 리소스 추가 사용하는 Tencent Effect 패키지의 SDK 및 효과 리소스를 다운로드하고 파일을 압축 해제한 후 resources 폴더 아래의 LightCore.bundle, Light3DPlugin.bundle, LightBodyPlugin.bundle, LightHandPlugin.bundle, LightSegmentPlugin.bundle, audio2exp.bundle을 제외한 모든 bundle 리소스를 프로젝트에 추가합니다.
Build Settings의 Other Linker Flags에 -ObjC를 추가합니다.
6. Bundle Identifier를 라이선스에 바인딩된 Bundle Identifier로 변경합니다.
1. SDK 및 효과 리소스를 다운로드하고 압축을 해제합니다. sdk는 frameworks 폴더에 있고 bundle 리소스는 resources에 있습니다.
2. SDK 2.5.1이전 버전:
Xcode 프로젝트를 열고 frameworks 폴더의 framework 를 실제 프로젝트에 추가하고 실행할 target을 선택한 다음 General 항목을 선택하고 Frameworks,Libraries,and Embedded Content 항목 펼치기를 클릭합니다. 하단의 ‘+’ 아이콘을 클릭하여 종속 라이브러리를 추가합니다. 다운로드한 XMagic.framework, YTCommonXMagic.framework, libpag.framework 및 필요한 종속 라이브러리 MetalPerformanceShaders.framework, CoreTelephony.framework, JavaScriptCore.framework, VideoToolbox.framework, libc++.tbd를 차례로 추가하고 필요에 따라 다른 툴 라이브러리 Masonry.framework(제어 레이아웃 라이브러리), SSZipArchive(파일 압축 해제 라이브러리)를 추가합니다.

SDK 2.5.1 이후 버전:
Xcode 프로젝트를 열고 frameworks 폴더의 framework 를 프로젝트에 추가합니다. 실행할 target을 선택하고, General 을 선택한 다음
Frameworks,Libraries,and Embedded Content를 확장하고 “+”를 클릭하여 다운로드한 프레임워크 XMagic.framework,
YTCommonXMagic.framework, libpag.framework , Audio2Exp.framework, TEFFmpeg.framework,
MetalPerformanceShaders.framework, CoreTelephony.framework, JavaScriptCore.framework,
VideoToolbox.frameworklibc++.tbd를 추가합니다. 필요한 경우 Masonry.framework(컨트롤 레이아웃) 및 SSZipArchive
(파일 압축 해제)를 추가할 수도 있습니다.

3. resources 폴더의 효과 리소스를 프로젝트에 추가합니다.
4. Build Settings의 Other Linker Flags에 -ObjC를 추가합니다.
5. Bundle Identifier를 라이선스에 바인딩된 Bundle Identifier로 변경합니다.
패키지 크기를 줄이기 위해 SDK에 필요한 모델 리소스 및 애니메이션 리소스 MotionRes(일부 기본 버전 SDK 애니메이션 리소스 없음)를 인터넷으로 변경하여 다운로드할 수 있습니다. 다운로드가 완료 후 위 파일의 경로를 SDK로 설정합니다.
Demo의 다운로드 로직을 재사용하는 것이 좋습니다. 기존 다운로드 서비스를 사용할 수도 있습니다. 동적 다운로드에 대한 자세한 지침은 SDK 패키지 축소(iOS)를 참고하십시오.

권한 구성

Info.plist 파일에 해당 권한에 대한 설명을 추가하십시오. 그렇지 않으면 iOS 10 시스템에서 프로그램이 크래쉬될 수 있습니다. App이 카메라를 사용할 수 있도록 Privacy - Camera Usage Description에서 카메라 권한을 활성화하십시오.

통합 단계

1단계: 인증

1. 라이선스를 신청하고 LicenseURL과 LicenseKEY를 받습니다.
참고
일반적인 상황에서는 App이 한 번만 성공적으로 연결되면 인증 프로세스를 완료할 수 있으므로 License 파일을 프로젝트의 프로젝트 디렉터리에 넣을 필요가 없습니다. 하지만 App이 인터넷에 연결되지 않은 상태에서도 SDK 관련 기능을 사용하려면 License 파일을 다운로드하여 프로젝트 디렉터리에 넣을 수 있으며, License 파일 이름은 반드시 v_cube.license여야 합니다.
2. 해당 비즈니스 모듈의 초기화 코드에 URL과 KEY를 설정하여 license 다운로드를 트리거하여 사용 전에 임시로 다운로드하는 것을 피합니다. AppDelegate의 didFinishLaunchingWithOptions 메소드에서도 다운로드가 실행될 수 있습니다. 이 중 LicenseURL과 LicenseKey는 콘솔이 License에 바인딩될 때 생성되는 권한 정보입니다.
SDK 2.5.1 이전 버전에서 TELicenseCheck.hXMagic.framework에 있고, SDK 2.5.1 이후 버전에서 TELicenseCheck.h
YTCommonXMagic.framework에 있습니다.
[TELicenseCheck setTELicense:LicenseURL key:LicenseKey completion:^(NSInteger authresult, NSString * _Nonnull errorMsg) {
if (authresult == TELicenseCheckOk) {
NSLog(@"인증 성공");
} else {
NSLog(@"인증 실패");
}
}];
errorCode 인증 설명:
에러 코드
설명
0
성공. Success
-1
입력 매개변수가 유효하지 않습니다. 예: URL 또는 KEY가 비어 있습니다.
-3
다운로드에 실패했습니다. 네트워크 설정을 확인하십시오.
-4
로컬 시스템에서 읽은 TE SDK 인증 정보가 비어 있으며, 이는 I/O 실패로 인해 발생할 수 있습니다
-5
읽은 VCUBE TEMP License 파일의 내용이 비어 있으며 이는 I/O 실패로 인해 발생할 수 있습니다
-6
v_cube.license 파일의 JSON 필드가 올바르지 않습니다. 도움이 필요한 경우 Tencent Cloud에 문의하십시오.
-7
서명 확인에 실패했습니다. 도움이 필요한 경우 Tencent Cloud에 문의하십시오.
-8
암호 해독에 실패했습니다. 도움이 필요한 경우 Tencent Cloud에 문의하십시오.
-9
TELicense 필드의 JSON 필드가 올바르지 않습니다. 도움이 필요한 경우 Tencent Cloud에 문의하십시오.
-10
온라인으로 파싱된 TE SDK 인증 정보가 비어 있습니다. 도움이 필요한 경우 Tencent Cloud에 문의하십시오.
-11
TE SDK 인증 정보를 로컬 파일에 쓰지 못했습니다. I/O 실패로 인해 발생할 수 있습니다.
-12
다운로드에 실패했으며 로컬 asset을 파싱하지 못했습니다.
-13
인증 실패
기타
도움이 필요한 경우 Tencent Cloud에 문의하십시오

2단계: SDK(XMagic.framework) 로딩

Tencent 특수 효과 SDK를 사용하는 라이프사이클은 대략 다음과 같습니다.
1. 효과 리소스를 로딩합니다.
NSDictionary *assetsDict = @{@"core_name":@"LightCore.bundle",
@"root_path":[[NSBundle mainBundle] bundlePath]
};
2. Tencent Effect SDK를 초기화합니다.
initWithRenderSize:assetsDict: (XMagic)
self.beautyKit = [[XMagic alloc] initWithRenderSize:previewSize assetsDict:assetsDict];
3. SDK는 데이터의 각 프레임을 처리하고 결과를 반환합니다.
process: (XMagic)
// 카메라 콜백을 통해 프레임 데이터 전달
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection;

// 원시 데이터를 가져와 각 프레임의 렌더링 정보 처리
- (void)mycaptureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)inputSampleBuffer fromConnection:(AVCaptureConnection *)connection originImageProcess:(BOOL)originImageProcess;

// CPU를 사용하여 데이터 처리
- (YTProcessOutput*)processDataWithCpuFuc:(CMSampleBufferRef)inputSampleBuffer;

// GPU를 사용하여 데이터 처리
- (YTProcessOutput*)processDataWithGpuFuc:(CMSampleBufferRef)inputSampleBuffer;

// Tencent Effect SDK의 데이터 처리 API
/// @param input 처리할 데이터 입력
/// @return 처리된 데이터 출력
- (YTProcessOutput* _Nonnull)process:(YTProcessInput * _Nonnull)input;
4. Tencent Effect SDK를 릴리스합니다.
deinit (XMagic)
// SDK의 리소스를 해제해야 할 때 이 API 호출
[self.beautyKit deinit]
설명
위의 단계를 완료한 후 필요에 따라 디스플레이 타이밍 및 기타 장치 환경 매개변수를 제어할 수 있습니다.

FAQ

질문1: 컴파일 오류: “unexpected service error: build aborted due to an internal error: unable to write manifest to-xxxx-manifest.xcbuild': mkdir(/data, S_IRWXU | S_IRWXG | S_IRWXO): Read-only file system (30):”가 발생하는 경우 어떻게 해야 합니까?

1. File > Project settings > Build System으로 이동하고 Legacy Build System을 선택합니다.
2. Xcode 13.0++ 의 경우 File > Workspace Settings에서 Do not show a diagnostic issue about build system deprecation을 선택해야 합니다.

질문2: 리소스를 가져온 후 iOS 프로젝트를 컴파일할 때 “Xcode 12.X 버전 컴파일 Building for iOS Simulator, but the linked and embedded framework '.framework'...” 오류가 발생하면 어떻게 해야 합니까?

Build Settings > Build Options로 이동하여 Validate Workspace를 Yes로 변경하고 실행을 클릭합니다.
설명
Validate Workspace를 Yes로 변경한 후, 컴파일이 완료된 후 다시 No로 변경해도 프로젝트를 성공적으로 실행할 수 있습니다.

질문3: 필터 설정이 적용되지 않으면 어떻게 해야 합니까?

설정한 값을 확인하십시오(값 범위: 0-100). 값이 너무 작으면 효과가 명확하지 않을 수 있습니다.

질문4: iOS Demo 프로젝트 컴파일 시 dSYM 생성 오류가 발생하면 어떻게 해야 합니까?

PhaseScriptExecution CMake\ PostBuild\ Rules build/XMagicDemo.build/Debug-iphoneos/XMagicDemo.build/Script-81731F743E244CF2B089C1BF.sh
cd /Users/zhenli/Downloads/xmagic_s106
/bin/sh -c /Users/zhenli/Downloads/xmagic_s106/build/XMagicDemo.build/Debug-iphoneos/XMagicDemo.build/Script-81731F743E244CF2B089C1BF.sh

Command /bin/sh failed with exit code 1
문제 원인: libpag.framework 및 Masonary.framework에 다시 서명하지 못했습니다.
솔루션:
1.1 demo/copy_framework.sh를 엽니다.
1.2 다음 명령을 사용하여 로컬 cmake의 절대 경로를 확인하고 $(what cmake)를 cmake의 절대 경로로 변경합니다.
which cmake
1.3 모든 Apple Development: ……를 자신의 서명으로 교체하십시오.