作为多媒体应用的开发者,你是否想为媒体播放器快速开发创新AI功能?例如:

  • 在播放低画质视频过程中对其进行逐帧超分
  • 让满屏飘飞的弹幕自动绕过画面的主体人物

HMS Core 6.0.0开放的多媒体管线服务(AV Pipeline Kit),帮助媒体应用开发者降低创新功能的开发难度。通过定义插件的标准接口和数据流在插件之间的流转方式,开发者只需要按照标准接口完成插件开发,就可以迅速构建出新型的媒体场景。

多媒体管线服务(AV Pipeline Kit)定义了一套插件标准接口,且已经内置了对插件的数据流管理、线程管理、内存管理、消息管理等,开发者只需要实现插件的核心处理逻辑即可,无需关注线程同异步、流控、音视频同步等逻辑。目前已预置了3个可应用在播放场景的Pipeline:视频播放、视频超分、声音事件检测,并提供Java接口供开发者使用,同时也支持开发者通过C++接口直接调用单个预置插件。若预置插件或预置Pipeline不满足使用要求,开发者可以自定义插件、自定义Pipeline。

技术方案

视频超分

下面我们详细描述内置的高性能视频超分插件,穿插在视频流的解码和显示流程之间,将低分辨率视频实时转换成高分辨率视频,改善视频清晰度,增加视频细节表现力,提升用户观看体验。

开发准备

1. 新建Android Studio工程,修改工程级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'implementation 'com.huawei.hms:avpipeline-fallback-cvfoundry:6.0.0.302'
}

3. 配置manifest
修改AndroidManifest.xml文件,添加读取外部存储的权限。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

4. 同步工程

点击工具栏中的gradle同步图标,完成“build.gradle”文件的同步,将相关依赖下载到本地。

开发步骤

详细示例代码请参见GitHub

1. 动态申请存储权限

String[] permissionLists = {Manifest.permission.READ_EXTERNAL_STORAGE
};
int requestPermissionCode = 1;
for (String permission : permissionLists) {if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, permissionLists, requestPermissionCode);}
}

2. 初始化AV Pipeline框架

Context context = getApplicationContext();
boolean ret = AVPLoader.initFwk(context);
if(!ret) return;

3. 创建MediaPlayer实例

播放过程的控制由该实例来完成。

MediaPlayer mPlayer = MediaPlayer.create(MediaPlayer.PLAYER_TYPE_AV);
if (mPlayer == null) return;

4. 设置graph配置文件
AV Pipeline框架依赖于该配置文件来编排各个插件。此外还需要将MEDIA_ENABLE_CV的值设置为1,使能视频超分插件。

MediaMeta meta = new MediaMeta();
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等接口设置回调函数。(可选)

// 设置视频渲染的surface
SurfaceView mSurfaceVideo = findViewById(R.id.surfaceViewup);
SurfaceHolder mVideoHolder = mSurfaceVideo.getHolder();
mVideoHolder.addCallback(new SurfaceHolder.Callback() {// 用户自定义回调函数内容,可参考codelab_视频播放
});
mPlayer.setVideoDisplay(mVideoHolder.getSurface());
// 设置待播放媒体文件的路径
mPlayer.setDataSource(mFilePath);
// 若需要监听某些事件,则还需要通过setXXXListener接口设置回调函数
// 例如需要监听prepare完成的事件,需进行如下设置
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {@Override    public void onPrepared(MediaPlayer mp, int param1, int param2, MediaParcel parcel) {// 用户自定义回调函数内容}
});
mPlayer.prepare();

6. 调用start开始播放

mPlayer.start();

7. 调用stop停止播放

mPlayer.stop();

8. 销毁播放器

mPlayer.reset();
mPlayer.release();

9. 其他注意事项
视频超分插件的约束详见文档

访问华为多媒体管线服务官网,了解更多相关内容
获取华为多媒体管线服务开发指导文档
华为多媒体管线服务开源仓库地址:GitHub、Gitee
华为HMS Core官方论坛
解决集成问题请到Stack Overflow

点击右上角头像右方的关注,第一时间了解HMS Core最新技术~

媒体应用视频超分AI神器!360P视频一键转换HD相关推荐

  1. AI视频超分工具,720P视频一键转8K!

    "曾经沧海难为水,除却巫山不是云" ,一旦买了4K屏之后,就感觉已经无法忍受720P的"渣"画质和尺寸.但是就目前的情况来看,还有大量的视频都处在720P或者1 ...

  2. 揭开“视频超分”黑科技的神秘面纱

    在看电影时,有一幕大家应该都非常熟悉,警察从证据图片中选取一块区域放大,再放大,直到一个很小的目标变得清晰可见,从而发现重要的线索.现实中是不是真的有这样的技术,可以把模糊的小图变得清晰?答案是,一定 ...

  3. 即插即用!视频超分中的涨点神器:iSeeBetter

    CNN让超分结果更真实,GAN让超分结果更丰满,所以CNN+GAN=GOOD! 添加一个鉴别器组件就能使结果增加0.32dB,即插即用,涨点神器!是否在其他的CNN架构上也可行,还需实验验证. 题目: ...

  4. AI视频超分升级版,720P转4K效果更赞!

    如何将图片放大又不损失画质,是很长一段时间内,很多人的追求.直到AI超分技术的出现,这种追求已经成为可能.更让人欣喜的是,现在连视频也可以做到.前不久介绍过Topazlabs推出的视频增强软件Topa ...

  5. AI视频增强 -- Topaz 视频超分 | Topaz Video Enhance AI | 【软件试用】

    视频增强 – Topaz 视频超分 | 软件试用 视频超分重建 -->低分辨率 - 转换 高清分辨率 1920 x 1080.4k.8k 文章目录 ❤️ 视频增强 -- 软件试用

  6. 传统图像处理与深度学习又一结合:时空多尺度非局部自相似集成视频超分

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 导读 本文将传统图像处理中的自相似性 ...

  7. 入选CVPR 2022!一举打败16个同类模型,视频超分比赛冠军算法!

    来源:量子位 如何让模糊的老片变高清? AI的答案是超分辨率算法: 现在,在视频超分领域,有一个强大的算法拿下了超分比赛NTIRE 2021三冠一亚的优异成绩,登上了CVPR 2022. 它的名字叫做 ...

  8. 一举打败16个同类模型,视频超分比赛冠军算法入选CVPR 2022,来自商汤南洋理工大学...

    丰色 发自 凹非寺 量子位 | 公众号 QbitAI 如何让模糊的老片变高清? AI的答案是超分辨率算法: 现在,在视频超分领域,有一个强大的算法拿下了超分比赛NTIRE 2021三冠一亚的优异成绩, ...

  9. 【论文解读】传统图像处理与深度学习又一结合:时空多尺度非局部自相似集成视频超分...

    作者丨Happy 编辑丨极市平台 导读 本文将传统图像处理中的自相似性.金字塔等思路与深度学习相结合进行视频超分,得到了SOTA指标,并为传统图像处理思路与深度学习提供了一个新的结合点.>> ...

  10. 对于霸榜视频超分领域的VRT方法的深度解读

    (如需转载等事宜请联系"我爱计算机视觉") 作者单位:苏黎世联邦理工大学.Meta.鲁汶大学 论文链接:https://arxiv.org/pdf/2201.12288.pdf 代 ...

最新文章

  1. 【组队学习】【27期】青少年编程(Turtle)
  2. c语言s开头的函数以及作用,C语言函数大全-s开头-完整版.doc
  3. 技术架构委员需要关注哪些问题
  4. CentOS 卸载OpenJdk和Tomcat开机启动
  5. Vue009_过渡动画
  6. Hadoop之Flume详解
  7. UE4在VS2013中各个编译配置代表意义
  8. openmeetings2.0安装和开发
  9. 【STL源码剖析】总结笔记(1):开篇
  10. 【数据结构 严蔚敏版】 链表基本操作
  11. VB6制作一个简单小程序(税收计算)
  12. Turbo码,接近完美的编码
  13. visio怎么画球_cad怎么画装配图
  14. Google趋势(Trends)有趣的关键词
  15. My Visual DataBase(数据库编程软件)v5.3免费版
  16. 长安大学转计算机专业,长安大学本科学生转换专业管理办法
  17. 6月30日,入职感悟、未来规划、本周工作总结,记录印象深刻的BUG。
  18. P1061 [NOIP2006 普及组] Jam 的计数法
  19. Flutter2.0重磅发布!带你一文打尽Flutter Engage
  20. java 获取当前时间的三种方法

热门文章

  1. Curious Cupid
  2. 单片机延时问题20问
  3. 这家机场扶梯安装“智能管家”,扶梯消毒仪现高招,绝了!
  4. linux邮件客户端配置文件,在Deepin V20下配置Evolution邮件客户端,添加新邮箱全过程...
  5. 基于DDD的微服务设计和开发实战
  6. 对闰年和平年计算均值
  7. ESLint和Prettier的配置
  8. Kubernetes 报错小结
  9. mysql数据库怎么该用户名和密码_如何修改MySql数据库的用户名和密码?
  10. DayDayUp:2019.12.31罗振宇2020年跨年演讲《时间的朋友》读后有感—思维决定一个人的上限,能力决定一个人的下限