当前位置: 首页 > 后端技术 > Java

媒体应用视频超分辨率AI神器!360P视频一键转换高清

时间:2023-04-01 19:03:26 Java

作为多媒体应用开发者,你是否想快速开发创新的媒体播放AI功能?例如:在播放低画质视频的过程中,进行逐帧超分辨率,让全屏弹幕自动绕过画面主角。HMSCore6.0.0开放的多媒体流水线服务(AVPipelineKit),帮助媒体应用开发者降低创新功能的开发难度。通过定义插件的标准接口和插件之间数据流的流向,开发者只需按照标准接口完成插件的开发,即可快速构建全新的媒体场景。多媒体管道服务(AVPipelineKit)定义了一套插件标准接口,为插件内置了数据流管理、线程管理、内存管理、消息管理等。开发者只需要实现插件的核心处理逻辑即可。无需关注线程同步、流控、音视频同步等逻辑,目前已经预置了3条可应用于播放场景的pipeline:视频播放、视频超清、声音事件检测,并提供Java接口供开发者使用,也支持开发者通过C++接口直接调用单个预设插件。如果预置插件或预置流水线不满足使用需求,开发者可以自定义插件和流水线。技术方案视频超分下面详细介绍内置的高性能视频超分插件,穿插在视频流的解码和显示过程中,将低分辨率视频实时转换为高分辨率视频时间,提高视频清晰度,并提高视频分辨率。细节的表现力提升了用户的观看体验。开发准备1.新建一个AndroidStudio项目,修改项目级build.gradle文件如下,在“allprojects>repositories”中添加Maven仓库的地址。allprojects{repositories{google()jcenter()maven{url'https://developer.huawei.com/repo/'}}}2、修改项目级build.gradle文件如下,targetSdkVersion设置为28;并添加dependencies编译依赖。dependencies{implementation'com.huawei.hms:avpipelinesdk:6.0.0.302'implementation'com.huawei.hms:avpipeline-aidl:6.0.0.302'implementation'com.huawei.hms:avpipeline-fallback-base:6.0.0.302'实施'com.huawei.hms:avpipeline-fallback-cvfoundry:6.0.0.302'}3。配置manifest修改AndroidManifest.xml文件,增加读取外部存储的权限。4.同步项目点击工具栏中的gradle同步图标,完成“build.gradle”文件的同步,将相关依赖下载到本地。详细的开发步骤示例代码可以参考GitHub1。动态申请存储权限String[]permissionLists={Manifest.permission.READ_EXTERNAL_STORAGE};intrequestPermissionCode=1;for(Stringpermission:permissionLists){if(ContextCompat.checkSelfPermission(this,permission)!=PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(这个,permissionLists,requestPermissionCode);}}2。初始化AVPipeline框架Contextcontext=getApplicationContext();booleanret=AVPLoader.initFwk(context);if(!ret)return;3。创建一个MediaPlayer实例,通过该实例控制播放过程。MediaPlayermPlayer=MediaPlayer.create(MediaPlayer.PLAYER_TYPE_AV);如果(mPlayer==null)返回;4.设置图形配置文件AVPipeline框架依赖配置文件来安排各种插件。另外,需要将MEDIA\_ENABLE\_CV的值设置为1,才能开启视频超清插件。MediaMetameta=newMediaMeta();meta.setString(MediaMeta.MEDIA_GRAPH_PATH,getExternalFilesDir(null).getPath()+"/PlayerGraphCV.xml");meta.setInt32(MediaMeta.MEDIA_ENABLE_CV,1);mPlayer.setParameter(meta);5.设置如下参数后,调用prepare接口开始MediaPlayer准备。如果需要监听某些事件,可以通过setOnPreparedListener、setOnErrorListener等接口设置回调函数。(可选)//设置视频渲染的surfaceSurfaceViewmSurfaceVideo=findViewById(R.id.surfaceViewup);SurfaceHoldermVideoHolder=mSurfaceVideo.getHolder();mVideoHolder.addCallback(newSurfaceHolder.Callback(){//自定义回调函数内容,请参考codelab_视频播放});mPlayer.setVideoDisplay(mVideoHolder.getSurface());//设置要播放的媒体文件的路径mPlayer.setDataSource(mFilePath);//如果需要监听一些事件,还需要通过setXXXListener接口设置回调函数//比如需要监听prepare完成事件,需要设置如下{//用户自定义回调函数内容}});mPlayer.prepare();6.调用start开始播放mPlayer.start();7.调用stop停止播放mPlayer.stop();8。销毁播放器mPlayer.reset();mPlayer.release();9.其他注意事项视频超清插件的使用限制详见文档。访问华为多媒体管道服务官网,了解更多相关内容。获取华为多媒体管道服务开发指导文档。GitHub、Gitee华为HMSCore官方论坛解决集成问题,请前往StackOverflow,点击右上角头像右侧关注,第一时间了解HMSCore最新技术~