请联系您的腾讯云商务开通服务。您需要提供将要集成SDK的App的这些信息:腾讯云账号APPID、App签名证书信息(签名证书的序列号、发布者、所有者)、App包名。
APPID可以在您的腾讯云【账号中心】->【账号信息】->【基本信息】中查看。
App签名证书信息可以使用keytool命令查看,例如
keytool -list -v -keystore test.keystore
除此之外,您还需要告知接入的SDK版本。SDK版本分为标准版与专业版:
- 标准版:提供标准版超分辨率功能,实现快速的超分辨率处理速度,适用于高实时性要求的场景。在这种模式下,可以实现显著的图像质量改善。
- 专业版:提供的功能包括标准版超分辨率、专业版超分辨率、专业版图像增强。专业版超分辨率和图像增强适用于高质量要求的场景,但对设备性能有一定要求,建议在中高端智能手机上使用。
提供的信息
信息 | 值 |
---|---|
APPID | 12345678 |
包名 | com.tencent.mps.srplayer |
序列号 | 17ccecf2 |
所有者 | test |
发布者 | test |
SDK版本 | 标准版/专业版 |
授权方案分为授权申请和授权验证两个过程,其中授权申请在授权有效期内,只会进行一次。授权服务开通后,您可以在初始化TSRSDK时使用在线方式进行鉴权,APP需要有访问网络权限。授权服务具有有效期限,当授权过期失效后需要重新获取授权。
为了服务能够正常授权,您还需要在腾讯云官网开通【媒体处理(MPS)控制台】。开通链接:https://console.cloud.tencent.com/mps
下载Demo工程的源码。
将前面“SDK授权申请”步骤获取的SDK和授权文件,配置到Demo工程中。操作如下:
- 在Android Studio中,找到【File】-> 【Project Structure】 -> 【Modules】-> 【Signing Configs】中配置您的签名证书。
- 或者您可以在【Build】-> 【Generate Signed Bundle / APK】使用证书生成签名的APK
- 无论您使用哪种方式,请确保配置的签名证书与提供给我们的信息一致。
- 运行demo
以下是Demo工程编译好的App安装包,可以直接进行下载安装体验。
<uses-permission android:name="android.permission.INTERNET"/>
//如果 Android targetSdkVersion 大于等于 31,需要添加以下标签,否则专业版功能无法使用
<application>
<uses-native-library android:name="libOpenCL.so" android:required="false"/>
</application>
TSRSdk包括init和deInit两个方法。init方法用于初始化SDK,deInit方法用于释放资源。
- 在线鉴权初始化TSRSdk,您需要传入APPID和AUTH_ID进行在线鉴权,还需要传入TSRSdk.TSRSdkLicenseVerifyResultCallback用于获取在线鉴权的结果。除此之外,还需要传入一个TSRLogger,用于获取SDK的日志。下面是示例代码:
TSRSdkLicenseVerifyResultCallback callback = new TSRSdkLicenseVerifyResultCallback() {
public void onTSRSdkLicenseVerifyResult(TSRSdkLicenseStatus status) {
if (status == TSRSdkLicenseStatus.AVAILABLE) {
// Creating TSRPass for super-resolution rendering
} else {
// Do something when the verification of sdk's license failed.
}
}
};
TSRSdk.getInstance().init(appId, authId, callback, logger);
- 当您已经不需要使用TSRSdk时,需要调用TSRSdk的deInit方法,释放资源。注意:在调用TSRSdk的deInit方法前,确保所有TSRPass已经释放资源,否则会有意想不到的问题。
// If you have created TSRPass, you should release it before release TSRSdk.
tsrPass.deInit();
// Release resources when the TSRSdk object is no longer needed.
TSRSdk.getInstance().deInit();
TSRPass 是用于进行超分辨率渲染的类,在创建 TSRPass 时,您需要传入 TSRAlgorithmType 设置超分的算法类型。
注意:TSRPass 不是线程安全的,必须在同一个线程中调用 TSRPass 的方法。
在 TSRAlgorithmType 枚举中,有 STANDARD、PROFESSIONAL_HIGH_QUALITY 和 PROFESSIONAL_FAST 三个算法运行模式:
- STANDARD(标准)模式:提供快速的超分辨率处理速度,适用于高实时性要求的场景。在这种模式下,可以实现显著的图像质量改善。
- PROFESSIONAL_HIGH_QUALITY(专业版-高质量)模式:确保了高图像质量,同时需要更高的设备性能。它适合于有高图像质量要求的场景,并推荐在中高端智能手机上使用。
- PROFESSIONAL_FAST(专业版-快速)模式:在牺牲一些图像质量的同时,确保了更快的处理速度。它适合于有高实时性要求的场景,并推荐在中档智能手机上使用。
它包括了 init
, reInit
, render
和 deInit
方法。在使用 TSRPass 前,您需要调用 init
方法进行初始化。如果需要在不创建新的 TSRPass 实例的情况下更新输入图像的尺寸或缩放比例,可以使用 reInit
方法。在使用结束后,您需要调用 deInit
方法释放资源。
以下是标准版超分代码示例:
// Create a TSRPass object using the constructor.
TSRPass tsrPass = new TSRPass(TSRPass.TSRAlgorithmType.STANDARD);
// The code below must be executed in the same glThread.
//----------------------GL Thread---------------------//
// Initialize TSRPass and set the input image width, height, and srRatio.
TSRPass.TSRInitStatusCode initStatus = tsrPass.init(inputWidth, inputHeight, srRatio);
if (initStatus == TSRPass.TSRInitStatusCode.SUCCESS) {
// Optional: Set the brightness, saturation, contrast and sharpness levels.
tsrPass.setParameters(52, 55, 60, 0);
// Perform super-resolution rendering and get the enhanced texture ID.
int outputTextureId = tsrPass.render(inputTextureId);
// Reinitialize if there are changes in image dimensions or srRatio.
TSRPass.TSRInitStatusCode reInitStatus = tsrPass.reInit(newInputWidth, newInputHeight, newSrRatio);
if (reInitStatus == TSRPass.TSRInitStatusCode.SUCCESS) {
outputTextureId = tsrPass.render(inputTextureId);
} else {
// Handle reinitialization failure
}
// Release resources when no longer needed.
tsrPass.deInit();
} else {
// Handle initialization failure
}
//----------------------GL Thread---------------------//
以下是专业版超分代码示例:
// Create a TSRPass object with the desired algorithm type.
TSRPass tsrPass = new TSRPass(TSRPass.TSRAlgorithmType.PROFESSIONAL_HIGH_QUALITY);
// Before initializing the TSRPass, configure the maximum input resolution for super-resolution processing.
// This configuration step is crucial as it helps to allocate memory and optimize performance.
// Here, we set the maximum resolution to 1920x1920 pixels.
TSRPass.TSRInitStatusCode configStatus = tsrPass.configureProSRMaxInputResolution(1920, 1920);
// The code below must be executed in the same glThread.
//----------------------GL Thread---------------------//
// Initialize TSRPass with the specified parameters.
TSRPass.TSRInitStatusCode initStatus = tsrPass.init(inputWidth, inputHeight, srRatio);
if (initStatus == TSRPass.TSRInitStatusCode.SUCCESS) {
// Perform super-resolution rendering and get the enhanced texture ID.
int outputTextureId = tsrPass.render(inputTextureId);
// Reinitialize if there are changes in image dimensions or srRatio.
TSRPass.TSRInitStatusCode reInitStatus = tsrPass.reInit(newInputWidth, newInputHeight, newSrRatio);
if (reInitStatus == TSRPass.TSRInitStatusCode.SUCCESS) {
outputTextureId = tsrPass.render(inputTextureId);
} else {
// Handle reinitialization failure
}
// Release resources when no longer needed.
tsrPass.deInit();
} else {
// Handle initialization failure
}
//----------------------GL Thread---------------------//
TIEPass 是用于进行图像增强渲染的类,只在专业版SDK可用。在创建 TIEPass 时,您需要传入 TIEAlgorithmType 设置图像增强的算法类型。它包括 init
, reInit
, render
和 deInit
方法。在使用 TIEPass 前,您需要调用 init
方法进行初始化。如果需要在不创建新的 TIEPass 实例的情况下更新输入图像的尺寸,可以使用 reInit
方法。在使用结束后,您需要调用 deInit
方法释放资源。
在 TIEAlgorithmType 枚举中,有以下两个算法运行模式:
- PROFESSIONAL_HIGH_QUALITY(专业版-高质量)模式:确保了高图像质量,同时需要更高的设备性能。它适合于有高图像质量要求的场景,并推荐在中高端智能手机上使用。
- PROFESSIONAL_FAST(专业版-快速)模式:在牺牲一些图像质量的同时,确保了更快的处理速度。它适合于有高实时性要求的场景,并推荐在中档智能手机上使用。
注意:TIEPass 不是线程安全的,必须在同一个线程中调用 TIEPass 的方法。
以下是代码示例:
// Create a TIEPass object using the constructor.
TIEPass tiePass = new TIEPass(TIEPass.TIEAlgorithmType.PROFESSIONAL_HIGH_QUALITY);
// Alternatively, create a TIEPass object with the professional fast rendering type.
// TIEPass tiePass = new TIEPass(TIEPass.TIEAlgorithmType.PROFESSIONAL_FAST);
// Before initializing the TIEPass, configure the maximum input resolution for super-resolution processing.
// This configuration step is crucial as it helps to allocate memory and optimize performance.
// Here, we set the maximum resolution to 1920x1920 pixels.
TIEInitStatusCode configStatus = tiePass.configureProIEMaxInputResolution(1920, 1920);
// The code below must be executed in the same glThread.
//----------------------GL Thread---------------------//
// Initialize TIEPass and set the input image width and height.
TIEPass.TIEInitStatusCode initStatus = tiePass.init(inputWidth, inputHeight);
if (initStatus == TIEPass.TIEInitStatusCode.SUCCESS) {
// If the type of inputTexture is TextureOES, you must transform it to Texture2D.
// Conversion code can be written according to actual requirements.
// Perform image enhancement rendering on the input OpenGL texture and get the enhanced texture ID.
int outputTextureId = tiePass.render(inputTextureId);
// Reinitialize with new dimensions if needed.
TIEPass.TIEInitStatusCode reInitStatus = tiePass.reInit(newInputWidth, newInputHeight);
if (reInitStatus == TSRPass.TSRInitStatusCode.SUCCESS) {
outputTextureId = tiePass.render(inputTextureId);
} else {
// Handle reinitialization failure
}
// Release resources when the TIEPass object is no longer needed.
tiePass.deInit();
} else {
// Handle initialization failure
}
//----------------------GL Thread---------------------//
TSRLogger用于接收SDK内部的日志,请将这些日志写到文件,以便定位外网问题。
您可以点击连接查看TSRSDK的API文档,内含接口注释与调用示例。