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簡易版 インストールパッケージのボリュームがスタンダード版より小さく、ベーシック版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. 実際のプロジェクトへの美顔リソースの追加 対応するパッケージのSDKおよび美顔リソースをダウンロードして解凍し、resourcesフォルダ下のLightCore.bundleLight3DPlugin.bundleLightBodyPlugin.bundleLightHandPlugin.bundleLightSegmentPlugin.bundle、audio2exp.bundle以外のその他のbundleリソースを実際のプロジェクトに追加します。
Build SettingsのOther Linker Flagsに-ObjCを追加します。
6. Bundle Identifierを、テスト用に申請した権限と同じものに変更します。
1. SDKおよび美顔リソースをダウンロードして解凍します。frameworksフォルダ内にあるのがsdk、resourcesフォルダ内にあるのが美顔のbundleリソースです。
2. SDKのバージョンが2.5.1より古い場合:
ご自身のXcodeプロジェクトを開き、frameworksフォルダ内のframeworkを実際のプロジェクトに追加します。実行したいtargetを選択し、Generalの項目を選び、Frameworks,Libraries,and Embedded Contentの項目をクリックして展開し、下部の「+」アイコンをクリックして依存ライブラリを追加します。ダウンロードしたXMagic.frameworkYTCommonXMagic.frameworklibpag.frameworkおよびそれらに必要な依存ライブラリMetalPerformanceShaders.frameworkCoreTelephony.frameworkJavaScriptCore.frameworkVideoToolbox.frameworklibc++.tbdを順に追加します。必要に応じてその他のツールライブラリ、Masonry.framework(ウィジェットレイアウトライブラリ)、SSZipArchive(ファイル解凍ライブラリ)を追加します。

SDKのバージョンが2.5.1およびそれ以降の場合:
Xcodeプロジェクトを開き、frameworksフォルダ内のframeworkを実際のプロジェクトに追加し、動作させたいtargetを選択し、General項目を選び、
Frameworks,Libraries,and Embedded Contentの項目をクリックして展開し、下部の「+」アイコンをクリックして依存ライブラリを追加します。ダウンロードしたXMagic.framework
YTCommonXMagic.frameworklibpag.frameworkAudio2Exp.frameworkTEFFmpeg.frameworkおよびそれらに必要な依存ライブラリ
MetalPerformanceShaders.frameworkCoreTelephony.frameworkJavaScriptCore.framework
VideoToolbox.frameworklibc++.tbdを順に追加し、必要に応じてその他のツールライブラリ、Masonry.framework(ウィジェットレイアウトライブラリ)、SSZipArchive
(ファイル解凍ライブラリ)を追加します。

3. resourcesフォルダ内の美顔リソースを実際のプロジェクトに追加します。
4. Build SettingsのOther Linker Flagsに-ObjCを追加します。
5. Bundle Identifierを、テスト用に申請した権限と同じものに変更します。
パッケージのサイズを小さくするため、SDKに必要なモデルリソースおよび動的エフェクトリソースMotionRes(一部のベーシック版SDKには動的エフェクトリソースはありません)をネットワークからのダウンロードに変更することができます。ダウンロード成功後、上記ファイルのパスをSDKに設定します。
Demoのダウンロードロジックを再利用することをお勧めします。もちろん、既存のダウンロードサービスを使用することもできます。動的ダウンロードの詳細なガイドについては、SDKパッケージのスリム化(iOS)をご参照ください。

権限の設定

info.plistファイルに対応する権限の説明を追加します。これを行わなければ、iOS 10システム上でプログラムがクラッシュする場合があります。Privacy - Camera Usage Descriptionでカメラの権限を有効にし、Appによるカメラの使用を許可してください。

統合の手順

ステップ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権限承認情報が空です。IOの失敗による可能性があります
-5
読み取ったVCUBE TEMP Licenseファイルの内容が空です。IOの失敗による可能性があります
-6
v_cube.licenseファイルのJSONフィールドが正しくありません。Tencent Cloudチームに連絡して処理を依頼してください
-7
署名の検証に失敗しました。Tencent Cloudチームに連絡して処理を依頼してください
-8
復号に失敗しました。Tencent Cloudチームに連絡して処理を依頼してください
-9
TELicenseフィールド内のJSONフィールドが正しくありません。Tencent Cloudチームに連絡して処理を依頼してください
-10
ネットワークから解析したTE権限承認情報が空です。Tencent Cloudチームに連絡して処理を依頼してください
-11
TE権限承認情報をローカルファイルに書き込む際に失敗しました。IOの失敗による可能性があります
-12
ダウンロードに失敗しました。ローカルassetの解析も失敗しました
-13
認証に失敗しました
その他
Tencent Cloudチームに連絡して処理を依頼してください

ステップ2:SDKのロード(XMagic.framework)

Tencent Effect 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. Tencent Effect 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でデータインターフェースを処理します
/// @param input処理データ情報を入力します
/// @return処理後のデータ情報を出力します
- (YTProcessOutput* _Nonnull)process:(YTProcessInput * _Nonnull)input;
4. Tencent Effect SDKをリリースします。
deinit (XMagic)
// SDKリソースをリリースする必要がある場所を呼び出します
[self.beautyKit deinit]
説明
上記の手順が完了すると、ユーザーは自身の実際のニーズに応じて表示のタイミングおよびその他のデバイスの関連環境を制御できるようになります。

よくあるご質問

質問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 SettingsDo 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のパスを確認し、$(which cmake)をローカルcmakeの絶対パスに変更します。
which cmake
1.3 Apple Development: ......をすべてご自身の署名に置き換えます。