b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

LiteAVSDK集成,因此可以动态加载库

电脑杂谈  发布时间:2020-06-03 15:17:11  来源:网络整理

视频播放器jar版_大悲咒dj版视频播放_什么视频播放器有tv版

在Android开发中,Android Studio用于集成第三方SDK(例如,腾讯视频云移动直播,播放器,短视频以及实时音频和视频). 通常有两种集成方法: aar集成和jar + so集成. Android集成非常成熟,有关详细信息,请参见SDK集成指南.

随着项目业务的增长,APK的大小需要尽可能的薄. 通常,您可以考虑使用加载来减少最终apk安装包的大小.

以移动实时广播5.4全功能版(LiteAVSDK_Professional_Android_5.4.6097)为例. 整个SDK的大小主要来自so文件. 这些文件是SDK正常运行所依赖的音频和视频编库,图像处理库和声学. 加工零件. 每个so库的具体作用都可以阅读.

具体转换如下:

使用jar + so进行集成,从官方网站下载SDK,解压缩LiteAVSDK_xxx.zip压缩包以获取libs目录,该目录主要包含so文件和jar文件. 上传SO文件将SDK压缩包中的so文件上传到CDN,并记录下载地址,例如. 准备开始在用户启动与SDK相关的功能之前(例如在开始播放视频之前),使用加载来提示用户“正在加载相关的功能模块”. 在下载SO文件的同时,当用户等待时,APP可以下载so文件并将其存储在应用程序目录中(例如,应用程序根目录中的files文件夹). 为了确保此过程不受操作员的DNS拦截的影响,请在下载文件后,验证so文件的完整性. 加载SO文件并等待所有这些文件就位之后,请调用TXLiveBase的setLibraryPath来设置SDK的下载目标路径,然后调用与SDK相关的功能. 之后,SDK将在这些路径下加载所需的so文件并启动相关功能.

下载,解压缩和检查完整性的过程由客户自己灵活完成,该演示将不进行演示. 我们直接从复制到内部存储开始

大悲咒dj版视频播放_视频播放器jar版_什么视频播放器有tv版

//FileUtils类
public static boolean copyFolder (String oldPath , String newPath){
    File newFile = new File(newPath);
    if(!newFile.exists()){
        if(!newFile.mkdirs()){
            Log.e("TAG","无法创建路径");
            return  false;
        }
    }
    File oldFile = new File(oldPath);
    String[] files = oldFile.list();
    Log.i("TAG", "files.length: "+files.length);
    File temp;
    for(String file : files){
        if(oldPath.endsWith(File.separator)){
            temp = new File(oldFile + file);
        }else{
            temp = new File(oldPath + File.separator + file);
        }
        if(temp.isDirectory()){
            copyFolder(oldPath + "/"+file , newPath + "/" + file);
        }else if(!temp.exists()){
            Log.e("TAG", "copyFolder: oldFile not exist");
            return  false;
        }else if(!temp.isFile()){
            Log.e("TAG", "copyFolder: oldFile not file");
            return  false;
        }else if(!temp.canRead()){
            Log.e("TAG", "copyFolder: oldFile cannot read");
            return false;
        }else{
            try {
                FileInputStream fileInputStream = new FileInputStream(temp);
                FileOutputStream fileOutputStream = new FileOutputStream(newPath + "/" +temp.getName());
                byte[] buffer = new byte[1024];
                int byteRead;
                while ((byteRead = fileInputStream.read(buffer))!=-1){
                    fileOutputStream.write(buffer,0,byteRead);
                }
                fileInputStream.close();
                fileOutputStream.flush();
                fileOutputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            File fileile = new File(newPath + "/" +temp.getName());
            fileile.setWritable(true);
            fileile.setReadable(true);
            fileile.setExecutable(true);
        }
    }
    return  true ;
}

//下载so的外部存储目录,比如sd卡下的armeabi文件夹
oldFilePath = Environment.getExternalStorageDirectory().getPath()+"/armeabi";
//应用的根目录file文件下新建armeabi文件夹
newFilePath = getFilesDir().getAbsolutePath()+"/armeabi";
//复制到内存存储
FileUtils.copyFolder(oldFilePath, newFilePath)
//sdk接口动态加载so
TXLiveBase.setLibraryPath(newFilePath);

//设置在 Android Studio 的控制台打印 SDK 的相关输出。
TXLiveBase.setConsoleEnabled(true);
//获取sdk版本号
String sdkVersionStr = TXLiveBase.getSDKVersionStr();
Log.i("TAG", "sdkVersionStr: "+sdkVersionStr);
//开始推流
mLivePusher.startPusher(rtmpUrl.trim());

在正常情况下,可以成功推送流,如上所示. 如果您踏进维修区,将会遇到以下崩溃,请再次检查集成配置.

在这一点上,它被认为是完整的.

与版相比,商业企业版增加了特殊效果,例如大眼睛,瘦脸,运动贴,绿屏和其他特殊效果. 随着特权功能的发展,腾讯云小型直播团队通过与Youtu和P-picture团队合作,将这些特殊效果深深地集成到了LiteAVSDK的图像处理过程中.

大悲咒dj版视频播放_什么视频播放器有tv版_视频播放器jar版

如果它是集成的商业SDK,例如Mobile Live 5.4商业版(LiteAVSDK_Enterprise_Android_5.4.6097),请解压缩该SDK软件包,您会发现更多jar和so库,以及这些so库的动态加载方法,Youtu实验室有以下特殊加载要求(此处已对6.8商业版进行了优化,请参阅“ LiteAVSDK商业版6.6 +,Android集成了动态加载”).

//sdk接口动态加载so
TXLiveBase.setLibraryPath(newFilePath);
//系统接口动态加载so
loadLibrary(newFilePath, "YTCommon");
loadLibrary(newFilePath, "image_filter_common");
loadLibrary(newFilePath, "image_filter_gpu");
loadLibrary(newFilePath, "algo_rithm_jni");
loadLibrary(newFilePath, "format_convert");
loadLibrary(newFilePath, "ParticleSystem");
loadLibrary(newFilePath,"nnpack");
loadLibrary(newFilePath, "YTHandDetector");
loadLibrary(newFilePath, "GestureDetectJni");
loadLibrary(newFilePath,"YTIllumination");
loadLibrary(newFilePath,"YTFaceTrackPro");
loadLibrary(newFilePath,"algo_youtu_jni");
 private static boolean loadLibrary(String path, String name) {
        boolean loadSucess = false;
        try {
            if (!TextUtils.isEmpty(path)) {
                String libName = path+"/lib"+name+".so";
                File file = new File(libName);
                if (file.exists()) {
                    Log.i("TAG", libName + " exist, " + file.length());
                }
                else {
                    Log.i("TAG", libName + " not exist");
                }
                file.setExecutable(true);
                file.setReadable(true);
                file.setWritable(true);
                System.load(libName);
                loadSucess = true;
            }
        } catch (Error e1) {
            Log.i("NativeLoad","load library : "+e1.toString());
        } catch (Exception e) {
            Log.i("NativeLoad","load library : "+e.toString());
        }
        return loadSucess;
    }

//设置动效Licence
TXLiveBase.getInstance().setLicence(context, LicenceUrl, Key);
//验证Licence
TXLiveBase.getInstance().getLicenceInfo(context);
//设置推流动效
mLivePusher.setMotionTmpl(params.mMotionTmplPath);

在通常情况下,您可以打开视频播放器jar版视频播放器jar版,如上所示. 如果您踏进维修区,将会遇到以下崩溃,请再次检查集成配置.

CPU体系结构

第五代ARM v5TE,使用软件浮点算法,与所有ARM设备兼容,通用性强,速度慢

视频播放器jar版_大悲咒dj版视频播放_什么视频播放器有tv版

使用硬件浮点算法和高级扩展功能的第七代ARM v7

第八代64位,包括AArch32,AArch64,两个执行状态分别对应于32、64bit

英特尔32位,通常用于平板电脑

英特尔64位,通常用于平板电脑

//非商业版,6.3之前的版本支持armeabi、armeabi-v7a,6.3开始支持armeabi、armeabi-v7a、arm64-v8a
//商业版,只支持armeabi
defaultConfig {
    ndk {
        abiFilters "armeabi"//,"armeabi-v7a","arm64-v8a","x86_64"
    }
}

因此,当应用程序在64位系统上运行时,它可以区分以下三种情况:

视频播放器jar版_大悲咒dj版视频播放_什么视频播放器有tv版

因此,当您的项目仅指定支持armeabi时,在64位手机上运行以动态加载时,将发生崩溃. 解决方案是: 首先将32位的so文件放入安装包中,然后在运行时动态加载其他so库,以便应用程序启动32位进程,而动态加载的so库也是32位版本,不再需要在运行时闪回.

相关文章:

LiteAVSDK商业版6.6 +,Android集成了动态加载功能,因此

动态加载so库的实现方法和问题处理

Android的文件加载机制会询问源代码摘要参考资料

演示下载


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-232518-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...