终端极速高清

最近更新时间:2024-04-11 15:15:21

我的收藏

概述

腾讯云视立方·音视频终端引擎提供了终端极速高清插件,该插件可在终端实现视频播放的超分后处理,适用于以下场景:
成本优化 保证画质的前提下,降低视频传输成本。如在云端将 720p 视频降档为 540p 进行传输,在终端播放时利用超分技术将视频画质提升为 720p 效果进行播放。
画质提升 将原本低分辨率的视频转化为高分辨率视频,提升视频播放清晰度,实现画质优化。
注意:
目前仅腾讯云视立方 · 播放器 SDK(Player)移动端9.5.29009以上版本可使用该插件。
使用终端极速高清插件需要申请 License,当前提供免费的测试版 License,获取方式请参见 终端极速高清 License

效果和功耗

可单击下方视频查看终端极速高清功能效果,视频左半部分为原视频,右半部分为开启终端极速高清功能后的效果:

开启终端极速高清后,近景处路面碎石、远方树叶等清晰度均得到提升。
说明:
运行终端极速高清插件后,电流提升小于100mA,额外耗电几乎可以忽略。

操作步骤

步骤1:获取插件

1. 终端极速高清插件(下文简称“插件”)作为独立的 SDK 提供,您可以根据项目需求进行集成,下载地址如下:
终端类别
SDK 下载地址
Android 端
iOS 端
2. 将下载的插件 plugin_monet-release-v.x.x.x.aar 或 TXCMonetPlugin-release-v.x.x.x.framework(x.x.x. 为版本号)集成到工程,启动播放器实例后,宿主会自动加载插件。
3. 对于 iOS 端,在集成超分 SDK 后,需要在项目工程中添加 CoreML.framework 库,路径为"Build Phases > Link Binary With Libraries > '选择+号添加' "即可。



同时,为了适配苹果的隐私清单,请将 TXCMonetPlugin-Privacy.bundle 添加到项目工程中,或者将 bundle 里的“PrivacyInfo.xcprivacy”整合进待集成的项目工程内。添加 TXCMonetPlugin-Privacy.bundle 到项目工程中的方法为:"Build Phases > Copy Bundle Resources > '选择+号添加'"即可。


步骤2:加载资源

Android 端超分需要额外集成超分模型资源,资源 下载地址。下载可以通过集成到 app assets 目录或者动态加载方法进行配置资源。必须确保资源配置成功,才可以进行初始化 License。
集成到 assets 目录
动态加载
1. 解压下载后的 sr_resource.zip 文件, 把 sr_resource 目录复制到 app assets 目录。
2. 在 this.getCacheDir().getAbsolutePath() 目录新建 sr_resource 文件夹,暂且称 sr_resource 的路径为 dstPath, 然后把解压后的 sr_resource 里的文件复制到 dstPath。
3. 配置资源加载路径:MonetPlugin.setResourcePath(destPath)

示例代码如下
private void copySRResourceAsync() { Runnable task = new Runnable() { @Override public void run() { String destPath = MainActivity.this.getCacheDir().getAbsolutePath() + "/sr_resource"; File file = new File(destPath); if (!file.exists()) { file.mkdir(); } copyAssetsToDst(MainActivity.this, "sr_resource", destPath); MonetPlugin.setResourcePath(destPath); } }; new Thread(task).start(); }

private static void copyAssetsToDst(Context context, String srcDir, String dstDir) { String fileNames[] = null; try { fileNames = context.getAssets().list(srcDir); } catch (IOException e) { e.printStackTrace(); return; } if (fileNames.length > 0) { File file = new File(dstDir); if (!file.exists()) { file.mkdirs(); } for (String fileName : fileNames) { if (!srcDir.equals("")) { copyAssetsToDst(context, srcDir + File.separator + fileName, dstDir + File.separator + fileName); } else { copyAssetsToDst(context, fileName, dstDir + File.separator + fileName); } } } else { InputStream is = null; FileOutputStream fos = null; try { File outFile = new File(dstDir); is = context.getAssets().open(srcDir); fos = new FileOutputStream(outFile); byte[] buffer = new byte[8192]; int byteCount; while ((byteCount = is.read(buffer)) != -1) { fos.write(buffer, 0, byteCount); } fos.flush(); is.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (fos != null) { fos.flush(); } if (is != null) { is.close(); } if (fos != null) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
1. 把下载的 sr_resource.zip 文件上传到贵司私有的服务器, 不建议直接使用腾讯云提供的下载地址,此地址指向文件会不定期更新。App 启
动后, 把 sr_resource.zip 下载到 Sdcard 并解压为 sr_resource。
2. 在 this.getCacheDir().getAbsolutePath() 目录新建 sr_resource 文件夹,暂且称 sr_resource 的路径为 dstPath, 然后把 Sdcard 上解压后的 sr_resource 里的文件复制到 dstPath。
3. 配置资源加载路径:MonetPlugin.setResourcePath(destPath)。 相关示例代码可以参见 集成到 assets 章节的指引
iOS 端超分无需此步骤,直接集成 framework 即可。

步骤3:初始化 License

1. 使用终端极速高清插件需要申请 License,当前提供免费的测试版 License,获取方式请参见 终端极速高清 License
2. 获取到 License 后,通过下面的接口进行初始化 License:
Android
iOS
String licenceUrl = "填入您购买的 License 的 URL";
String licenseKey = "填入您购买的 License 的 Key"
TXLiveBase.getInstance().setLicence(context, licenceUrl, licenseKey);
NSString *licenceURL = "填入您购买的 License 的 URL";
NSString *licenseKey = "填入您购买的 License 的 Key"
[TXLiveBase setLicenceURL:licenceURL key:licenseKey];

步骤4:开启或关闭终端极速高清能力

启动播放之后(建议在收到 TXLiveConstants.PLAY_EVT_VOD_PLAY_PREPARED 事件之后调用),可以通过 TXVodPlayer 下面的接口,进行开启和关闭超分:
Android
iOS
@Override
public void onPlayEvent(TXVodPlayer player, int event, Bundle param) {
if (event == TXLiveConstants.PLAY_EVT_VOD_PLAY_PREPARED) {
//开启终端极速高清
mVodPlayer.setStringOption("PARAM_SUPER_RESOLUTION_TYPE", 1);
}


}


//关闭终端极速高清
mVodPlayer.setStringOption("PARAM_SUPER_RESOLUTION_TYPE", 0);
//开启超分
//注意:超分的开启设置需要在播放器播放之前,或者如果在播放过程中进行设置,在设置以后需要重启一下
//播放,建议这里可以做一个切换动画
NSMutableDictionary *extInfoMap = [NSMutableDictionary dictionary];
[extInfoMap setObject:@"1" forKey:@"PARAM_SUPER_RESOLUTION_TYPE"];
[_txVodPlayer setExtentOptionInfo:extInfoMap];

//关闭超分:
[extInfoMap setObject:@"0" forKey:@"PARAM_SUPER_RESOLUTION_TYPE"];

插件加载配置

终端极速高清插件加入到工程后,默认会自动加载, 如果您不希望播放器加载该插件,可以通过下面的方式关闭:
Android
iOS
TXVodPlayConfig playConfig = new TXVodPlayConfig();
playConfig.mEnableRenderProcess = false;
mVodPlayer.setConfig(playConfig);
TXVodPlayConfig *playConfig = [[TXVodPlayConfig alloc] init];
playConfig.enableRenderProcess = NO;
[_txVodPlayer setConfig:playConfig];

设置混淆规则

在 proguard-rules.pro 文件,将终端极速高清相关类加入不混淆名单(iOS 默认无):
-keep class com.tencent.** { *; }

日志查看

Android
iOS
1. 终端极速高清插件加载成功日志:
D/HostEngine-PluginManger: [loadPlugin], succeed loading pluginId=2 ,pluginClazzName=com.tencent.liteav.monet.MonetPlugin
2. 开启终端极速高清功能成功开启日志:
D/MonetPlugin-Process: [updateModule], moduleType=1
3. 如果出现下面的日志,表示签发的 License 不合法:
E/MonetPlugin-Process: [updateModule], error, reason = license is invalid!!
1. 终端极速高清插件加载成功日志:
[PluginsSDK] plugin config : pluginId = 2, pluginName = Monet
2. 开启终端极速高清功能成功开启日志:
[MonetProcessor] PLUGIN: did update monet module, result = 1
3. 如果出现下面的日志,表示签发的 License 不合法:
[MonetProcessor] Monet License invalid, error, set module is null